将powershell代码导入.bat脚本

DiV*_*i0n 1 powershell batch-file

我在将PowerShell脚本导入批处理脚本时遇到问题.现在我正在使用它powershell -Command "& { }"来做这个,我正在分离每一行的PowerShell代码;.但我不知道该怎么做才能导入我的if陈述.这是我要导入的示例:

If ($a -eq $false)
{
    "FALSE"
    exit
}
Else
{
    If ($b -eq $false)
    {
        "FALSE"
        exit
    }
}
Run Code Online (Sandbox Code Playgroud)

Fro*_* F. 5

;在每个语句/换行符后使用(不是大括号).此外,您可以简化if/else.

PowerShell.exe -Command "& { $a = $false; if ($a -eq $false -or $b -eq $false) {'FALSE'; exit } }"
Run Code Online (Sandbox Code Playgroud)

或使用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)
Run Code Online (Sandbox Code Playgroud)

$encodedCommand 将包括您将在批处理文件中使用的Base64编码的字符串.

演示:

powershell.exe -encodedCommand "JABhACAAPQAgACQAZgBhAGwAcwBlAA0ACgANAAoASQBmACAAKAAkAGEAIAAtAGUAcQAgACQAZgBhAGwAcwBlACkADQAKAHsADQAKACAAIAAgACAAIgBGAEEATABTAEUAIgANAAoAIAAgACAAIABlAHgAaQB0AA0ACgB9AA0ACgBFAGwAcwBlAA0ACgB7AA0ACgAgACAAIAAgAEkAZgAgACgAJABiACAALQBlAHEAIAAkAGYAYQBsAHMAZQApAA0ACgAgACAAIAAgAHsADQAKACAAIAAgACAAIAAgACAAIAAiAEYAQQBMAFMARQAiAA0ACgAgACAAIAAgACAAIAAgACAAZQB4AGkAdAANAAoAIAAgACAAIAB9AA0ACgB9AA=="
Run Code Online (Sandbox Code Playgroud)