Správa registru systému Windows pomocí prostředí PowerShell

Od první verze poskytuje PowerShell správci velkou sadu nástrojů pro interakci s registrem Windows. V případě potřeby lze všechny typické operace registru provádět z původního dobrého rozhraní Regedit nebo obslužného programu reg.exe, ale z příkazového řádku PowerShell. A v různých skriptech a skriptech je to obecně nenahraditelné. V tomto článku se podíváme na to, jak používat PowerShell k vytváření, úpravám, mazání klíčů a parametrů registru systému Windows, vyhledávání a připojení k registru ve vzdáleném počítači..

Obsah:

  • Navigace v registru pomocí PowerShell
  • Jak změnit hodnotu registru
  • Jak vytvořit novou sekci (klíč) nebo položku registru
  • Odebrání klíče registru nebo nastavení
  • Jak přejmenovat klíč nebo parametr
  • Prohledejte registr pomocí PowerShell
  • Vzdálený přístup k registru pomocí prostředí PowerShell

Navigace v registru pomocí PowerShell

Práce s registrem systému v PowerShell je podobná práci s běžnými soubory na lokální jednotce.

Seznam dostupných disků:

get-psdrive

Jak vidíte, integrovaný poskytovatel umožňuje přístup k obsahu dvou větví registru: HKEY_CURRENT_USER (HKCU) a HKEY_LOCAL_MACHINE (HKLM). Adresy větví registru jsou adresovány podobně jako disky (HKLM: \ a HKCU: \) Chcete-li například přejít do kořene větve HKLM, proveďte následující kroky:

cd HKLM: \

Můžete přejít na konkrétní větev registru (například zodpovědnou za nastavení automatických aktualizací ovladačů) pomocí příkazu Set-Location (short alias sl)

Set-Location -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching

Vypište obsah větve:

dir

nebo

Get-childitem

Otevřete stejnou větev v editoru registru. Jak vidíte, poslední příkaz zobrazoval pouze informace o vnořených větvích, ale nikoli o parametrech aktuální větve.

Skutečnost je taková, že z pohledu PowerShell je větev registru (klíč) analogem souboru a parametry uložené v tomto klíči registru jsou vlastnosti tohoto souboru.

Chcete-li tedy získat parametry umístěné v této větvi, použijte rutinu Get-Item:

Získat položku .

nebo

Get-Item -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching

Jak vidíte, klíč DriverSearching má pouze jeden parametr - SearchOrderConfig s hodnotou 0.

Chcete-li získat přístup ke konkrétnímu parametru klíče, použijte rutinu Get-ItemProperty. Například přiřadíme obsah větve určité proměnné a získáme hodnotu konkrétního parametru:

$ DriverUpdate = Get-ItemProperty -Path “HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching”
$ DriverUpdate.SearchOrderConfig

Zjistíme, že hodnota parametru SearchOrderConfig je 1.

Jak změnit hodnotu registru

Chcete-li změnit hodnotu tohoto parametru, použijte rutinu Set-ItemProperty:

Set-ItemProperty - Cesta 'HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching' -Name SearchOrderConfig -Value 0

Zkontrolujte, zda se hodnota změnila:

Get-ItemProperty - Cesta 'HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching' -Name SearchOrderConfig

Jak vytvořit novou sekci (klíč) nebo položku registru

Chcete-li přidat novou větev registru, použijte příkaz Nová položka. Vytvořte novou větev s názvem NewKey:

$ HKCU_Desktop = "HKCU: \ Control Panel \ Desktop"
Nová položka - cesta $ HKCU_Desktop - jméno NewKey

Pro vytvořenou větev přidejte nový parametr řetězce s názvem SuperParamString a hodnotou file_name.txt:

New-ItemProperty - Cesta $ HKCU_Desktop \ NewKey - Jméno "SuperParamString" -Value "file_name.txt" -PropertyType "String"

Ujistěte se, že se v registru objeví nový klíč a parametr.

Odebrání klíče registru nebo nastavení

Odstraňte dříve vytvořený parametr SuperParamString:

$ HKCU_Desktop = "HKCU: \ Control Panel \ Desktop"
Remove-ItemProperty - Cesta $ HKCU_Desktop \ NewKey - Jméno "SuperParamString"

A pak smažte celou větev:

Remove-Item -Path $ HKCU_Desktop \ NewKey -Recurse

Poznámka:. Přepínač -Recurse říká, že musíte všechny vnořené dílčí sekce odstranit rekurzivně bez potvrzení

Chcete-li odstranit všechny prvky ve větvi, ale nikoli samotnou sekci, příkaz bude vypadat takto:

Odebrat položku - cesta $ HKCU_Desktop \ NewKey \ * -Recurse

Jak přejmenovat klíč nebo parametr

Chcete-li přejmenovat parametr, použijte příkaz:

Přejmenovat-ItemProperty - cesta 'HKCU: \ Ovládací panely \ Desktop \ NewKey' - jméno "SuperParamString" -newname "OldParamString"

Podobně můžete přejmenovat větev registru:

Přejmenovat položku - cesta 'HKCU: \ Ovládací panely \ Desktop \ NewKey' OldKey

Prohledejte registr pomocí PowerShell

PowerShell také umožňuje prohledávat registr. Následující skript prohledává větev HKCU: \ Control Panel \ Desktop pro parametry, které obsahují klíč dpi.

$ Path = (Get-ItemProperty 'HKCU: \ Control Panel \ Desktop')
$ Path.PSObject.Properties | ForEach-Object
If ($ _. Name-like '* dpi *')
Write-Host $ _. Name '=' $ _. Hodnota

Vzdálený přístup k registru pomocí prostředí PowerShell

PowerShell umožňuje přístup k registru vzdáleného počítače. Ke vzdálenému počítači se můžete připojit pomocí WinRM (Invoke-Command nebo Enter-PSSession):

Invoke-Command -ComputerName srv-fs1 -ScriptBlock Get-ItemProperty - Cesta 'HKLM: \ System \ Setup' -Name WorkingDirectory

Nebo prostřednictvím připojení ke vzdálenému registru (musí být povolena služba RemoteRegistry)

$ Server = "srv-fs1"
$ Reg = [Microsoft.Win32.RegistryKey] :: OpenRemoteBaseKey ('LocalMachine', $ Server)
$ RegKey = $ Reg.OpenSubKey ("System \ Setup")
$ RegValue = $ RegKey.GetValue ("WorkingDirectory")

Tip. Pokud potřebujete vytvořit / upravit konkrétní nastavení registru na mnoha počítačích s doménou, je snadnější používat funkce GPO.

Proto jsme se podívali na typické příklady použití PowerShell pro práci s registrem Windows. Jak vidíte, nic složitého.