PowerShellで1行で複数のコマンドを実行するにはどうすればよいですか?


269

cmdプロンプトでは、次のように1行で2つのコマンドを実行できます。

ipconfig /release & ipconfig /renew

PowerShellでこのコマンドを実行すると、次の結果が得られます。

Ampersand not allowed. The `&` operator is reserved for future use

PowerShellには、&cmdプロンプトと同等のものをすばやく生成できる演算子がありますか?

1行で2つのコマンドを実行する方法はすべて実行されます。スクリプトを作成できることは知っていますが、もう少しカッコいいものを探しています。


5
楽しいメモ:シリアルポートとシリアル化の間では、この質問を検索することは事実上不可能です。
デビッド

オタクになるために...それを検索することは非常に簡単です。関連するヒットセットを取得するのは非常に困難です。:)(素晴らしい質問に+1)
コンラッドヴィルターステン14年

回答:


384

PowerShellでコマンドをチェーンするには、セミコロンを使用します。

ipconfig /release; ipconfig /renew

9
それらは並行して実行されますか、それとも順次実行されますか
タルクス14

19
これにより、cmd.exeの&演算子と同様に、これらが順番に実行されます。
スクイージー14

43
ただし、大きな違いがあります-";" 最初のコマンドが失敗しても、2番目のコマンドを実行します。
イヴァン14年

10
前述のように、これはcmd.exeの&の動作でもあります。
スクイージー14年

7
@Rafiはい、{Command-One -ea Stop} Catch {Command-Tw​​o}を試してください
Dave_J

30

MS-DOSスタイルのコマンドインタープリターでの演算子の動作には大きな違いがありますが、セミコロンは前述の回答のようにコマンドをリンクします&

コマンドインタープリターでは、行の読み取り時に変数置換が行われます。これにより、中間なしで変数を交換するなど、いくつかの適切な可能性が可能になります。

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

結果として:

2
1

私の知る限り、PowerShellでこの動作を再現する方法はありません。それは良いことだと主張する人もいるかもしれません。

実際、PowerShellでこれを行う方法があります。

$b, $a = $a, $b

これにより、変数値が1行でスワップされます。


ただし、ショートカットで-commandオプションを使用して[ターゲット]フィールドからは機能しないようです
-clearlight
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.