将powershell代码导入.bat脚本

时间:2016-09-11 18:48:03

标签: powershell batch-file

我在将PowerShell脚本导入批处理脚本时遇到问题。现在我正在使用powershell -Command "& { }"执行此操作,我正在使用;分隔每一行PowerShell代码。但我不知道如何导入我的if声明。这是我要导入的示例:

If ($a -eq $false)
{
    "FALSE"
    exit
}
Else
{
    If ($b -eq $false)
    {
        "FALSE"
        exit
    }
}

1 个答案:

答案 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=="
相关问题