Od pierwszej wersji PowerShell zapewnia administratorowi duży zestaw narzędzi do interakcji z rejestrem Windows. W razie potrzeby wszystkie typowe operacje rejestru można wykonać nie ze starego dobrego interfejsu Regedit lub narzędzia reg.exe, ale z wiersza polecenia programu PowerShell. W różnych skryptach i skryptach jest ogólnie niezastąpiony. W tym artykule przyjrzymy się, jak używać programu PowerShell do tworzenia, edytowania, usuwania kluczy i parametrów rejestru systemu Windows, wyszukiwania i łączenia się z rejestrem na komputerze zdalnym.
Treść
- Nawigacja w rejestrze za pomocą programu PowerShell
- Jak zmienić wartość rejestru
- Jak utworzyć nową sekcję (klucz) lub wpis rejestru
- Usuwanie klucza rejestru lub ustawienia
- Jak zmienić nazwę klucza lub parametru
- Wyszukaj w rejestrze za pomocą programu PowerShell
- Zdalny dostęp do rejestru za pomocą programu PowerShell
Nawigacja w rejestrze za pomocą programu PowerShell
Praca z rejestrem systemu w programie PowerShell jest podobna do pracy ze zwykłymi plikami na dysku lokalnym.
Wymieńmy dostępne dyski:
get-psdrive
Jak widać, wbudowany dostawca umożliwia dostęp do zawartości dwóch gałęzi rejestru: HKEY_CURRENT_USER (HKCU) i HKEY_LOCAL_MACHINE (HKLM). Oddziały rejestru są adresowane, podobnie jak dyski (HKLM: \ i H.KCU: \) Na przykład, aby przejść do katalogu głównego gałęzi HKLM, wykonaj:
cd HKLM: \
Możesz przejść do określonej gałęzi rejestru (na przykład odpowiedzialnej za ustawienie automatycznych aktualizacji sterowników) za pomocą polecenia Set-Location (krótki alias sl)
Ustaw lokalizację -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching
Wyświetl zawartość oddziału:
reż
lub
Get-childitem
Otwórz ten sam oddział w edytorze rejestru. Jak widać, ostatnie polecenie wyświetlało tylko informacje o zagnieżdżonych gałęziach, ale nie o parametrach bieżącej gałęzi.
Faktem jest, że z punktu widzenia PowerShell gałąź rejestru (klucz) jest analogiem pliku, a parametry przechowywane w tym kluczu rejestru są właściwościami tego pliku.
Dlatego, aby uzyskać parametry znajdujące się w tej gałęzi, użyj polecenia cmdlet Get-Item:
Zdobądź przedmiot .
lub
Get-Item -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching
Jak widać, klucz DriverSearching ma tylko jeden parametr - SearchOrderConfig o wartości 0.
Aby uzyskać dostęp do określonego parametru klucza, użyj polecenia cmdlet Get-ItemProperty. Na przykład przypisujemy zawartość gałęzi do określonej zmiennej i otrzymujemy wartość określonego parametru:
$ DriverUpdate = Get-ItemProperty -Path „HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching”
$ DriverUpdate.SearchOrderConfig
Otrzymujemy, że wartość parametru SearchOrderConfig wynosi 1.
Jak zmienić wartość rejestru
Aby zmienić wartość tego parametru, użyj polecenia cmdlet Set-ItemProperty:
Set-ItemProperty -Path 'HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching' -Nazwa SearchOrderConfig -Wartość 0
Sprawdź, czy wartość się zmieniła:
Get-ItemProperty -Path 'HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching' -Name SearchOrderConfig
Jak utworzyć nową sekcję (klucz) lub wpis rejestru
Aby dodać nową gałąź rejestru, użyj polecenia Nowy element. Utwórz nowy oddział o nazwie NewKey:
$ HKCU_Desktop = "HKCU: \ Panel sterowania \ Desktop"
Nowa pozycja -Path $ HKCU_Desktop -Name NewKey
Dla utworzonej gałęzi dodaj nowy parametr ciągu o nazwie SuperParamString i wartości nazwa_pliku.txt:
New-ItemProperty -Path $ HKCU_Desktop \ NewKey -Name „SuperParamString” -Value ”nazwa_pliku.txt” -PropertyType „String”
Upewnij się, że nowy klucz i parametr pojawią się w rejestrze.
Usuwanie klucza rejestru lub ustawienia
Usuń wcześniej utworzony parametr SuperParamString:
$ HKCU_Desktop = "HKCU: \ Panel sterowania \ Desktop"
Remove-ItemProperty -Path $ HKCU_Desktop \ NewKey -Name "SuperParamString"
A następnie usuń całą gałąź:
Remove-Item -Path $ HKCU_Desktop \ NewKey -Recurse
Aby usunąć wszystkie elementy z gałęzi, ale nie samą sekcję, polecenie będzie wyglądać tak:
Remove-Item -Path $ HKCU_Desktop \ NewKey \ * -Recurse
Jak zmienić nazwę klucza lub parametru
Aby zmienić nazwę parametru, użyj polecenia:
Rename-ItemProperty -path 'HKCU: \ Control Panel \ Desktop \ NewKey' -name „SuperParamString” -nazwa „OldParamString”
Podobnie możesz zmienić nazwę gałęzi rejestru:
Zmień nazwę pozycji -path 'HKCU: \ Control Panel \ Desktop \ NewKey' OldKey
Wyszukaj w rejestrze za pomocą programu PowerShell
PowerShell umożliwia także przeszukiwanie rejestru. Poniższy skrypt przeszukuje gałąź HKCU: \ Control Panel \ Desktop w poszukiwaniu parametrów zawierających klucz dpi.
$ Path = (Get-ItemProperty 'HKCU: \ Control Panel \ Desktop')
$ Path.PSObject.Properties | ForEach-Object
Jeśli ($ _. Jak nazwa „* dpi *”)
Write-Host $ _. Name '=' $ _. Wartość
Zdalny dostęp do rejestru za pomocą programu PowerShell
PowerShell umożliwia dostęp do rejestru komputera zdalnego. Możesz połączyć się ze zdalnym komputerem za pomocą WinRM (Invoke-Command lub Enter-PSSession):
Invoke-Command -ComputerName srv-fs1 -ScriptBlock Get-ItemProperty -Path 'HKLM: \ System \ Setup' -Name WorkingDirectory
Lub poprzez połączenie ze zdalnym rejestrem (usługa RemoteRegistry musi być włączona)
$ Server = "srv-fs1"
$ Reg = [Microsoft.Win32.RegistryKey] :: OpenRemoteBaseKey („LocalMachine”, $ Server)
$ RegKey = $ Reg.OpenSubKey („System \ Setup”)
$ RegValue = $ RegKey.GetValue („WorkingDirectory”)
Przyjrzeliśmy się typowym przykładom używania programu PowerShell do pracy z rejestrem Windows. Jak widać, nic skomplikowanego.