使用powershell查找和删除/更改注册表项

时间:2014-11-19 10:54:35

标签: powershell search registry edit

我可以获得这样的注册表元素:

PS> $Registry_Key = "HKLM:\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\*\*\*"
PS> Get-ItemProperty -path $Registry_Key -name m_bSetBrowserPxySettings -ErrorAction SilentlyContinue

PSPath                   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\BMZ-GmbH\AdptList\Adpt00
PSParentPath             : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\BMZ-GmbH\AdptList
PSChildName              : Adpt00
PSDrive                  : HKLM
PSProvider               : Microsoft.PowerShell.Core\Registry
m_bSetBrowserPxySettings : 1

PSPath                   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\BMZ-GmbH\AdptList\Adpt01
PSParentPath             : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\BMZ-GmbH\AdptList
PSChildName              : Adpt01
PSDrive                  : HKLM
PSProvider               : Microsoft.PowerShell.Core\Registry
m_bSetBrowserPxySettings : 1

但现在我想完全删除m_bSetBrowserPxySettings,或者在此搜索中为每个匹配项将值更改为“0”。更改或删除无关紧要。为了达到这个目的,我需要添加什么来添加到脚本中?

2 个答案:

答案 0 :(得分:3)

您可以按照以下方式执行此操作:

$Registry_Key = "HKLM:\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\*\*\*"
Get-ItemProperty -path $Registry_Key -name m_bSetBrowserPxySettings -ErrorAction SilentlyContinue | % { Set-ItemProperty -path $_.PSPath -name m_bSetBrowserPxySettings "0" }

您需要将Get-ItemProperty命令传递给:

% { Set-ItemProperty -path $_.PSPath -name m_bSetBrowserPxySettings "0" }

%代表ForEach-Object cmdlet。它将做的是迭代你从Get-ItemProperty命令中获得的集合中的每个项目。 $_表示管道中的对象,因此每次迭代时都会更改为新项目。

$_.PSPath是项目注册表项的路径。你可以在问题的表格中看到这个。您可以使用此值与您的姓名一起传递给Set-ItemProperty,然后将值设置为您想要的任何值。

如果您想完全删除该项目,请转而使用以下内容:

% { Remove-ItemProperty -path $_.PSPath -name m_bSetBrowserPxySettings }

答案 1 :(得分:0)

而不是一直使用路径,你可以只处理项目本身:

$Registry_Key = "HKLM:\SOFTWARE\Wow6432Node\Lenovo\Access Connections\Locations\*\*\*"
$item = Get-Item $Registry_Key
$item | Get-ItemProperty -name m_bSetBrowserPxySettings -ErrorAction SilentlyContinue

然后将其设置为0:

$item | Set-ItemProperty -name m_bSetBrowserPxySettings "0" 

或删除它:

$item | Remove-ItemProperty -name m_bSetBrowserPxySettings