Powershell:删除包含字符串

时间:2017-05-26 08:26:14

标签: powershell registry

我想从HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-1-5-2 \ Components

删除包含Python35的所有密钥(1000+)

例如,我想删除所有类似于那个的键:

  • Keyname:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-2\Components\0027CAECCC428F356B8D845FF8331246

  • 姓名:0F617A7B1C879BC47865E0155CDD6722

  • 数据:C:\Users\Me\AppData\Local\Programs\Python\Python35\Lib\venv\__init__.py

我试过这个。

Get-ChildItem -path HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-2\Components\ -Recurse | where { $_.Name -match 'Python35'} | Remove-Item -Force

Powershell运行没有错误但是当我检查注册表时,密钥仍然存在。

Powershell以管理员身份运行,管理员拥有密钥HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-2\Components的所有权,并且还可以完全控制该密钥及其子密钥

1 个答案:

答案 0 :(得分:5)

尝试以下脚本:

$RE = 'Python35'
$Key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-2\Components'
Get-ChildItem $Key -Rec -EA SilentlyContinue | ForEach-Object {
   $CurrentKey = (Get-ItemProperty -Path $_.PsPath)
   If ($CurrentKey -match $RE){
     $CurrentKey|Remove-Item -Force -Whatif
   }
}

如果输出看起来正常,请从-WhatIf

中删除Remove-Item参数