Още от първата версия 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 -Повторете
За да изтриете всички елементи в клон, но не и самия раздел, командата ще бъде следната:
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")
И така, разгледахме типични примери за използване на PowerShell за работа с системния регистър на Windows. Както можете да видите, нищо сложно.