Управление на системния регистър на Windows с PowerShell

Още от първата версия PowerShell предоставя на администратора голям набор от инструменти за взаимодействие с системния регистър на Windows. Ако желаете, всички типични операции в регистъра могат да се извършват не от стария добър интерфейс Regedit или reg.exe, а от командния ред PowerShell. И в различни сценарии и скриптове като цяло е незаменим. В тази статия ще разгледаме как да използваме PowerShell за създаване, редактиране, изтриване на ключове и параметри на системния регистър на Windows, търсене и свързване с системния регистър на отдалечен компютър.

Съдържание:

  • Навигация в регистъра с помощта на PowerShell
  • Как да промените стойността на регистъра
  • Как да създадете нов раздел (ключ) или запис в регистъра
  • Премахване на ключ или настройка на системния регистър
  • Как да преименувате ключ или параметър
  • Търсете в регистъра с помощта на PowerShell
  • Отдалечен достъп до регистъра с помощта на PowerShell

Навигация в регистъра с помощта на PowerShell

Работата със системния регистър в PowerShell е подобна на работата с обикновени файлове на локално устройство.

Нека изброим наличните дискове:

получите-psdrive

Както можете да видите, вграденият доставчик ви позволява да получите достъп до съдържанието на два клона на системния регистър: HKEY_CURRENT_USER (HKCU) и HKEY_LOCAL_MACHINE (HKLM). Адресите на регистъра са адресирани, подобно на дискове (HKLM: \ и НKCU: \). Например, за да отидете в корена на клона HKLM, направете:

CD HKLM: \

Можете да отидете в конкретен клон на системния регистър (например отговорен за настройка на автоматични актуализации на драйвери), като използвате командата Set-Location (кратко псевдоним sl)

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

Списък на съдържанието на клона:

реж

или

Get-ChildItem

Отворете същия клон в редактора на системния регистър. Както можете да видите, последната команда показва само информация за вложени клонове, но не и за параметрите на текущия клон.

Факт е, че от гледна точка на PowerShell, клонът (ключът) на системния регистър е аналог на файла, а параметрите, съхранявани в този ключ на системния регистър, са свойствата на този файл.

Ето защо, за да получите параметрите, разположени в този клон, използвайте командлета Get-Item:

Get-т .

или

Get-Item -Path HKLM: \ СОФТУЕР \ Microsoft \ Windows \ CurrentVersion \ DriverSearching

Както можете да видите, ключът DriverSearching има само един параметър - SearchOrderConfig със стойност 0.

За достъп до конкретен ключов параметър използвайте командлета Get-ItemProperty. Например, ние присвояваме съдържанието на клона на определена променлива и получаваме стойността на конкретен параметър:

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

Разбираме, че стойността на параметъра SearchOrderConfig е 1.

Как да промените стойността на регистъра

За да промените стойността на този параметър, използвайте командлета Set-ItemProperty:

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

Проверете дали стойността се е променила:

Get-ItemProperty -Path 'HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ DriverSearching' -Имете SearchOrderConfig

Как да създадете нов раздел (ключ) или запис в регистъра

За да добавите нов клон на системния регистър, използвайте командата New-Item. Създайте нов клон на име NewKey:

$ HKCU_Desktop = "HKCU: \ Контролен панел \ Работен плот"
New-Item -Path $ HKCU_Desktop -Name NewKey

За създадения клон добавете нов параметър на низа с името SuperParamString и стойността file_name.txt:

New-ItemProperty -Path $ HKCU_Desktop \ NewKey -Name „SuperParamString“ -Value “file_name.txt“ -PropertyType „String“

Уверете се, че в регистъра се появяват нов ключ и параметър.

Премахване на ключ или настройка на системния регистър

Изтрийте създадения по-рано параметър SuperParamString:

$ HKCU_Desktop = "HKCU: \ Контролен панел \ Работен плот"
Remove-ItemProperty -Path $ HKCU_Desktop \ NewKey -Name "SuperParamString"

И след това изтрийте целия клон:

Remove-Item -Path $ HKCU_Desktop \ NewKey -Повторете

забележка. Превключвателят -Recurse казва, че трябва да изтриете всички вложени подсекции рекурсивно без потвърждение

За да изтриете всички елементи в клон, но не и самия раздел, командата ще бъде следната:

Remove-Item -Path $ HKCU_Desktop \ NewKey \ * -Последване

Как да преименувате ключ или параметър

За да преименувате параметър, използвайте командата:

Rename-ItemProperty -path 'HKCU: \ Контролен панел \ Desktop \ NewKey' -имено "SuperParamString" -име "OldParamString"

По подобен начин можете да преименувате клона на системния регистър:

Преименуване-елемент-път 'HKCU: \ Контролен панел \ Desktop \ NewKey' OldKey

Търсете в регистъра с помощта на PowerShell

PowerShell ви позволява също да търсите в системния регистър. Следният скрипт търси клон HKCU: \ Контролен панел \ Desktop за параметри, които съдържат dpi клавиша.

$ Path = (Get-ItemProperty 'HKCU: \ Контролен панел \ Desktop')
$ Path.PSObject.Properties | ForEach-Object
Ако ($ _. Име -подобен '* dpi *')
Write-Host $ _. Name '=' $ _. Стойност

Отдалечен достъп до регистъра с помощта на PowerShell

PowerShell ви позволява да получите достъп до системния регистър на отдалечен компютър. Можете да се свържете с отдалечен компютър чрез WinRM (Invoke-Command или Enter-PSSession):

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

Или чрез връзка с отдалечен регистър (Услугата RemoteRegistry трябва да е активирана)

$ Server = "srv-fs1"
$ Reg = [Microsoft.Win32.RegistryKey] :: OpenRemoteBaseKey ('LocalMachine', $ Server)
$ RegKey = $ Reg.OpenSubKey ("Система \ Настройка")
$ RegValue = $ RegKey.GetValue ("WorkingDirectory")

съвет. Ако трябва да създадете / промените конкретна настройка на системния регистър на много компютри с домейни, е по-лесно да използвате функциите на GPO.

И така, разгледахме типични примери за използване на PowerShell за работа с системния регистър на Windows. Както можете да видите, нищо сложно.