如何使用PowerShell访问和管理Windows注册表
时间:2020-01-09 10:46:34 来源:igfitidea点击:
从第一个版本开始,PowerShell为管理员提供了一套广泛的工具来与Windows系统注册表交互。如有必要,所有与注册表有关的典型操作都可以在不使用良好的旧Regedit接口的情况下执行,或者注册.exe,但在PowerShell命令提示符中。在不同的脚本和场景中,它是不可或者缺的。在本文中,我们将考虑如何创建、编辑或者删除Windows注册表的键和参数、搜索某些内容或者使用PowerShell连接到远程计算机上的注册表。
使用PowerShell进行注册表导航
在PowerShell中使用注册表类似于在本地磁盘上处理公共文件。
显示可用驱动器的列表:
get-psdrive
删除注册表项或者参数
删除先前创建的参数SuperParamString:
$HKCU_Desktop= "HKCU:\Control Panel\Desktop" Remove-ItemProperty –Path $HKCU_Desktop\NewKey –Name "SuperParamString"
然后删除整个分支:
Remove-Item –Path $HKCU_Desktop\NewKey –Recurse
说明–Recurse key表示所有子键必须递归删除,无需确认。
要删除分支中的所有项,但不删除分支本身,命令如下所示:
Remove-Item –Path $HKCU_Desktop\NewKey\* –Recurse
如何重命名键或者参数
要重命名参数,请使用以下命令:
Rename-ItemProperty –path ‘HKCU:\Control Panel\Desktop\NewKey’ –name "SuperParamString" –newname "OldParamString"
同样,可以重命名注册表项:
Rename-Item -path 'HKCU:\Control Panel\Desktop\NewKey' OldKey
使用PowerShell搜索注册表
PowerShell允许我们搜索注册表。下一个脚本在HKCU:\Control Panel\Desktop中搜索参数,这些参数的名称包含dpi键。
$Path = (Get-ItemProperty ‘HKCU:\Control Panel\Desktop’) $Path.PSObject.Properties | ForEach-Object { If($_.Name -like '*dpi*'){ Write-Host $_.Name ' = ' $_.Value } }
使用PowerShell远程访问注册表
PowerShell允许我们从远程计算机访问注册表。我们可以使用WinRM(调用命令或者输入PSSession)连接到远程计算机:
Invoke-Command –ComputerName srv-fs1 –ScriptBlock { Get-ItemProperty -Path 'HKLM:\System\Setup' -Name WorkingDirectory}
或者使用远程注册表连接(必须启用RemoteRegistry)
$Server = "lon-fs1" $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server) $RegKey= $Reg.OpenSubKey("System\Setup") $RegValue = $RegKey.GetValue("WorkingDirectory")
提示。如果必须在多台域计算机上创建/修改某个注册表参数,则更容易使用GPO功能。
所以,我们看了使用PowerShell与Windows注册表交互的典型例子。