use*_*030 2 powershell if-statement
我正在尝试添加上下文菜单(对于目录)选项"Open Sublime Project"和Sublime Text Editor 2的图标.
好吧,问题是如果我执行2个命令,执行是完美的,但如果我执行脚本,只执行第一个命令.
输出: 没有错误
If ( -NOT(
([bool](New-Item -Path "HKLM:\Software\Classes\Directory\shell\Open Sublime Project\command" -Value "`"C:\Program Files\Sublime Text 2\sublime_text.exe`" --new-window %1" -Force)) -OR
([bool](New-ItemProperty -Path "HKLM:\Software\Classes\Directory\shell\Open Sublime Project" -Name "Icon" -PropertyType "String" -Value "`"C:\Program Files\Sublime Text 2\sublime_text.exe`",0" -Force))
)
)
{
Write-Host "Error"
}
Else
{
Write-Host "No errors"
}
Run Code Online (Sandbox Code Playgroud)
get-help about_Logical_Operators :
Windows PowerShell逻辑运算符仅计算确定语句真值所需的语句.如果包含和运算符的语句中的左操作数为FALSE,则不评估右操作数.如果包含or语句的语句中的左操作数为TRUE,则不评估右操作数.因此,您可以使用这些语句,就像使用If语句一样.
您应该将执行与逻辑评估分开:
$val1 = New-Item -Path "HKLM:\Software\Classes\Directory\shell\Open Sublime Project\command" -Value "`"C:\Program Files\Sublime Text 2\sublime_text.exe`" --new-window %1" -Force)
$val2 = New-ItemProperty -Path "HKLM:\Software\Classes\Directory\shell\Open Sublime Project" -Name "Icon" -PropertyType "String" -Value "`"C:\Program Files\Sublime Text 2\sublime_text.exe`",0" -Force
If (-NOT($val1 -and $val2))
{
Write-Host "Error"
}
Else
{
Write-Host "No errors"
}
Run Code Online (Sandbox Code Playgroud)
另外,我更改-or为-and,因为使用或者,如果一个错误而另一个错误成功,它将不返回任何错误,这对我来说没有意义
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |