我创建了一个小的powershell脚本来查找注册表存在或不存在的位置。如果存在,则使用REG DELETE命令将其删除。但是在第一次成功运行之后,我检查了regedit,发现它已经被删除了。但是如果我再次尝试运行脚本,它仍然返回它发现一个注册表项之前已被删除。
$a = Test-Path -Path 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23170F69-40C1-2702-1604-000001000000}'
if ($a = "True")
{
echo "Found!"
REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23170F69-40C1-2702-1604-000001000000}"
}
else
{
echo "Not found!"
}发布于 2018-08-22 19:54:17
问题出在if-子句上。
在表达式中,您为变量$a赋值"True“,而不是检查$a是否等于"True”。在这种情况下,if -子句只检查赋值是否成功,这应该总是如此。
由于Test-Path返回一个布尔值,您可以像这样检查:
if($a){
#$a = true
} else {
#a = false
}如果你想让它更清晰可读,你也可以这样做
if($a -eq $true){
#$a = true
} else {
#a = false
}下面是关于powershell中比较运算符的文档的链接:Link
https://stackoverflow.com/questions/51964744
复制相似问题