2012-06-21 47 views
1

我正尝试使用powershell来清空注册表项。当我运行下面的代码时,一切似乎都很好,没有错误,但是在检查注册表时,密钥的内容仍然存在。使用Powershell进行WMI注册表编辑

我想要添加一个目标计算机到脚本中以从目标机器中删除已失效的密钥。

任何想法我做错了什么?多谢你们。

$hklm = 2147483650 
$key = "SOFTWARE\Microsoft\MSLicensing" 
$wmi = [wmiclass]"root\default:stdRegProv" 
$wmi.DeleteKey($hklm,$key) 

回答

0
$hklm = 2147483650 
$rootKey = "SOFTWARE\Microsoft\MSLicensing" 
$wmi = [wmiclass]"root\default:stdRegProv" 
#$wmi.DeleteKey($hklm,$key) 

[string[]]$subkeys = $wmi.EnumKey($hklm, $key).sNames 

foreach($subkey in $subkeys) { 

    $key = $rootKey + "\$subkey" 

    $wmi.DeleteKey($hklm, $key) 
} 

$wmi.DeleteKey($hklm, $rootKey) 

你的代码是失败的原因是,有您要删除键的下方按键。

上述代码应该解决您的问题。

+0

优秀非常感谢你!我的WMI知识非常糟糕。您可能会建议您在PowerShell中获得有关WMI的一些知识吗? – user1404390

0

CD HKLM:\ SOFTWARE \微软\ MSLicensing项 删除项2147483650 -whatif