早上好!
在powershell脚本中寻找一些帮助来搜索单词并删除值(而不是键(。不,这并不可疑,我们有几台安装了WebNavigatorBrowser的计算机(每个用户不需要管理(。我找不到静默卸载,所以我正在尝试自动执行脏卸载。我做了一些搜索和测试,但没有用
到目前为止,我有这个:
$Key = 'HKCU:SOFTWAREEvan'
Get-ChildItem $Key -Include *Web* -Recurse | Remove-Item -Force
但它删除了键而不是值。我需要同时做这两件事,因为密钥可能会说其他的东西,但价值就是它。
谢谢你的帮助!
如果我理解正确,那么您需要像以前一样获得ItemProperty,但不要使用Remove-Item
,而是使用Remove-ItemProperty
,如下所示。
$Key = 'HKCU:SOFTWAREEvan'
Get-ChildItem $Key -Include *web* -Recurse |
Get-ItemProperty | Remove-ItemProperty -Name {$_.pschildname} -WhatIf
如果您想限制找到的内容,也可以在Get-ItemProperty
中添加-Include
,尽管在这种情况下似乎不需要这样做。
$Key = 'HKCU:SOFTWAREtest'
Get-ChildItem $Key -Include *web* -Recurse |
Get-ItemProperty -Include *web* | Remove-ItemProperty -Name {$_.pschildname} -WhatIf
这两种方法都应该有效。只需在确认-WhatIf
将完全符合您的要求后将其移除即可。
编辑
根据我们在评论中的对话,我认为这可能会达到预期的效果。至少应该更近一点。
Get-ChildItem $key -Recurse | foreach {
if($_.name -match "WebNavigatorBrowser")
{
Remove-Item $_.pspath -Recurse -WhatIf
}
else
{
Get-ItemProperty $_.pspath |
Where-Object {$_ -match "WebNavigatorBrowser"} |
ForEach-Object {remove-item $_.pspath -Recurse -WhatIf}
}
}