Zarządzanie rejestrem Windows za pomocą PowerShell

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

Uwaga. Przełącznik -Recurse mówi, że musisz rekurencyjnie usunąć wszystkie zagnieżdżone podsekcje bez potwierdzenia

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”)

Wskazówka. Jeśli musisz utworzyć / zmodyfikować określone ustawienie rejestru na wielu komputerach domeny, łatwiej jest korzystać z funkcji GPO.

Przyjrzeliśmy się typowym przykładom używania programu PowerShell do pracy z rejestrem Windows. Jak widać, nic skomplikowanego.