2016-09-11 5 views
1

powershellスクリプトをバッチスクリプトにインポートする際に問題があります。今私はこれを行うにはpowershell -Command "& { }"を使用しており、私は;とpowershellコードのすべての行を分離しています。しかし、私はifステートメントをインポートするために何をすべきかわかりません。.batスクリプトへのpowershellコードのインポート

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

あなたはPowerShellスクリプトとして保存し 'たpowershell.exe - ファイルCでそれを呼び出すことができます:\ myscript.ps1'ていますが、単語' import'を使用考えると、私は」 1つのファイルが必要だと思います(もしそうなら、答えを見てください)。 –

+0

返信ありがとうございます@FrodeF。はい、私は1つの.batファイルが必要です。あなたの答えは非常に役に立ちました。最後に、私は 'powershell -command'を使い、'; 'を使って私の' if'文を分離しました。しかし、コードを読みやすくするための方法があるのか​​どうかは、何とか1行ではなく多くの行で表示するのが難しいのではないでしょうか。 – DiVeRsi0n

+0

二重のため申し訳ありませんが、私は "エンコード"の方法とは別にそれを行う方法について話していたと言いました。 – DiVeRsi0n

答えて

5

使用;すべてのステートメント/改行の後に(ないカーリーブレース):これは私がインポートしたいものの一例です。また、if/elseを単純化することもできます。

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

のBase64でそれをエンコードなど-EncodedCommandを使用するか:あなたはバッチファイルで使用するBase64でエンコードされた文字列が含まれます

$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

デモ:

powershell.exe -encodedCommand "JABhACAAPQAgACQAZgBhAGwAcwBlAA0ACgANAAoASQBmACAAKAAkAGEAIAAtAGUAcQAgACQAZgBhAGwAcwBlACkADQAKAHsADQAKACAAIAAgACAAIgBGAEEATABTAEUAIgANAAoAIAAgACAAIABlAHgAaQB0AA0ACgB9AA0ACgBFAGwAcwBlAA0ACgB7AA0ACgAgACAAIAAgAEkAZgAgACgAJABiACAALQBlAHEAIAAkAGYAYQBsAHMAZQApAA0ACgAgACAAIAAgAHsADQAKACAAIAAgACAAIAAgACAAIAAiAEYAQQBMAFMARQAiAA0ACgAgACAAIAAgACAAIAAgACAAZQB4AGkAdAANAAoAIAAgACAAIAB9AA0ACgB9AA==" 
関連する問題