我在将PowerShell脚本导入批处理脚本时遇到问题。现在我正在使用powershell -Command "& { }"
执行此操作,我正在使用;
分隔每一行PowerShell代码。但我不知道如何导入我的if
声明。这是我要导入的示例:
If ($a -eq $false)
{
"FALSE"
exit
}
Else
{
If ($b -eq $false)
{
"FALSE"
exit
}
}
答案 0 :(得分:5)
在每个语句/换行符后使用;
(不是大括号)。此外,您可以简化if / else。
PowerShell.exe -Command "& { $a = $false; if ($a -eq $false -or $b -eq $false) {'FALSE'; exit } }"
或使用Base64编码并使用-EncodedCommand
,如:
$command = @'
$a = $false
If ($a -eq $false)
{
"FALSE"
exit
}
Else
{
If ($b -eq $false)
{
"FALSE"
exit
}
}
'@
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
$encodedCommand
将包含您将在批处理文件中使用的Base64编码字符串。
演示:
powershell.exe -encodedCommand "JABhACAAPQAgACQAZgBhAGwAcwBlAA0ACgANAAoASQBmACAAKAAkAGEAIAAtAGUAcQAgACQAZgBhAGwAcwBlACkADQAKAHsADQAKACAAIAAgACAAIgBGAEEATABTAEUAIgANAAoAIAAgACAAIABlAHgAaQB0AA0ACgB9AA0ACgBFAGwAcwBlAA0ACgB7AA0ACgAgACAAIAAgAEkAZgAgACgAJABiACAALQBlAHEAIAAkAGYAYQBsAHMAZQApAA0ACgAgACAAIAAgAHsADQAKACAAIAAgACAAIAAgACAAIAAiAEYAQQBMAFMARQAiAA0ACgAgACAAIAAgACAAIAAgACAAZQB4AGkAdAANAAoAIAAgACAAIAB9AA0ACgB9AA=="