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
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")
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.