Exportieren von Schlüsseln in eine REG-Datei mit Powershell

Exportieren von Schlüsseln in eine REG-Datei mit Powershell

Ich muss mehrere Schlüsselwerte in der Windows 7-Registrierung ändern, um einem Befehl zum Starten von VLC einen Parameter hinzuzufügen.

Glücklicherweise sind alle Schlüssel untergeordnete Schlüssel, die mit folgendem beginnen VLC.:

Bildbeschreibung hier eingeben

Der Befehl für Openund PlayWithVLCmuss bearbeitet werden. Ich denke dabei an:

  • Exportieren von Schlüsseln in eine .reg-Datei,
  • Externes Bearbeiten von Werten zum Hinzufügen --no-playlist-enqueuezur Zeile
  • erneutes Importieren der .reg-Datei in die Registrierung.

Meine Kenntnisse in PowerShell sind begrenzt, ich gehe davon aus, dass der Code etwa so aussehen sollte:

Get-ChildItem "Registry::HKCR" -Recurse -Force 
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
    try {
        <create .reg entry>
    }
    catch { }
}

aber ich stecke an diesem Punkt fest. Können Sie mir einen Rat geben, wie ich weiter vorgehen soll?

Antwort1

OK, eingeschränkte PS-Kenntnisse und Sie möchten das Herumspielen mit der Registrierung automatisieren.

Ähhhhh ... bist du sicher? 8-}

Abgesehen davon.

Was Sie hier zeigen, ist in Ordnung, mit der Ausnahme, dass Sie weder die festzulegenden Werte noch den Befehl zum Festlegen des Registrierungsschlüssels anzeigen.

Mit diesen Cmdlets können Sie mit der Registrierung arbeiten.

Get-Command -CommandType Cmdlet -Name '*item*'


CommandType     Name                  ModuleName
-----------     ----                  ----------
Cmdlet          Clear-Item            Microsoft.PowerShell.Management
Cmdlet          Clear-ItemProperty    Microsoft.PowerShell.Management
Cmdlet          Copy-Item             Microsoft.PowerShell.Management
Cmdlet          Copy-ItemProperty     Microsoft.PowerShell.Management
Cmdlet          Get-ChildItem         Microsoft.PowerShell.Management
Cmdlet          Get-Item              Microsoft.PowerShell.Management
Cmdlet          Get-ItemProperty      Microsoft.PowerShell.Management
Cmdlet          Move-Item             Microsoft.PowerShell.Management
Cmdlet          Move-ItemProperty     Microsoft.PowerShell.Management
Cmdlet          New-Item              Microsoft.PowerShell.Management
Cmdlet          Remove-Item           Microsoft.PowerShell.Management
Cmdlet          Remove-ItemProperty   Microsoft.PowerShell.Management
Cmdlet          Set-Item              Microsoft.PowerShell.Management
Cmdlet          Set-ItemProperty      Microsoft.PowerShell.Management

Sehen Sie sich vor der Verwendung unbedingt auch die Hilfedateien und die darin enthaltenen Beispiele an.

https://docs.microsoft.com/en-us/powershell/scripting/getting-started/cookbooks/working-with-registry-entries?view=powershell-6

https://blogs.technet.microsoft.com/heyscriptingguy/2015/04/02/update-or-add-registry-key-value-with-powershell

PSRemoteRegistry 1.0.0.0

Dieses Modul enthält Funktionen zum Erstellen, Ändern oder Löschen von Registrierungsunterschlüsseln und -werten auf lokalen oder Remotecomputern.

https://www.powershellgallery.com/packages/PSRemoteRegistry/1.0.0.0

https://stackoverflow.com/questions/28076128/powershell-export-multiple-keys-to-one-reg-file

Wie wir wissen, kann das Manipulieren der Registrierung wirklich weh tun, wenn man nicht vorsichtig ist. Sichern Sie sie also zuerst, damit Sie sie im Notfall wiederherstellen können, oder zumindest auf einen Systemwiederherstellungspunkt, VM-Checkpoint/Snapshot.

Hier ist also eine geringfügige Änderung an Ihrem geposteten Code, aber betrachten Sie diese nicht als endgültig, da Sie Entscheidungen darüber treffen müssen, welche Maßnahmen ergriffen werden müssen und wie.

Get-ChildItem "Registry::HKCR" -Recurse -Force `
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
    try {
            'Target key to modify / export / whatever'
            $_.Name
            # 'Registry code here' -WhatIf # remove the whatif if you are sure you are good with what you have
    }
    catch { 
               Write-Warning -Message 'Key not accessible' 
               $_.Name
          }
}

verwandte Informationen