PowerShell で CMD コマンドを実行する方法
多くのレガシーコマンドプロンプト(CMD)コマンドは、Windows PowerShell スクリプト環境でも動作します。PowerShell 環境は、エイリアスを使用して ping のような最も使用されるコマンドから、レガシー環境の最も情報を提供するコマンドである tracert まで、これらのコマンドを前方に引き継ぎます。
しかし、コマンドプロンプトターミナルで実行されるいくつかのコマンドは、Windows PowerShell のスクリプト環境では動作しません。この記事では、それらを Windows PowerShell に正しく転記する方法について説明します。
PowerShell 呼び出しオペレーター&の使用
多様なスクリプトの世界において、PowerShell は他のスクリプト環境、特にコマンドプロンプト(CMD)からのコマンドを統合し、実行する能力で際立っています。この目的を達成する最も直接的な方法の 1つは、呼び出しオペレーター(&)を使用することです。
この記事では、PowerShell 内で CMD コマンドを実行するための呼び出しオペレーターの使用法について詳しく説明します。これは、PowerShell と従来の CMD スクリプトの機能を橋渡ししたいと考えている人々にとって、非常に価値のあるスキルです。
呼び出しオペレーターを使用するための基本構文は次のとおりです:
& <Command-String> <Arguments>
&:これが呼び出しオペレーターです。<Command-String>:これが実行したいコマンドです。これはCMDコマンド、PowerShell コマンドレット、またはスクリプトブロックである可能性があります。<Arguments>:これは省略可能で、コマンドが必要とする引数やパラメータを示します。
例のコード:
& cmd.exe /c echo "Hello from CMD"
このスクリプトでは、呼び出しオペレーター&を使用して、PowerShell 内で CMD コマンドをシームレスに実行します。まず、コマンドプロンプト用の指定された実行可能ファイルである cmd.exe を呼び出し、正しいコマンドライン環境で作業していることを確認します。
次に、cmd.exe に/c パラメータを渡します。これは、コマンドプロンプトに指定されたコマンドを実行し、その後すぐに終了するように指示する重要な命令です。我々の選択したコマンド echo "Hello from CMD"は、単純ながら効果的なデモンストレーションであり、コンソールに Hello from CMD というメッセージを単に表示します。
出力:

この出力は、CMD コマンド echo が PowerShell 内で成功裏に実行され、意図されたメッセージが表示されたことを示しています。
cmd.exe を使用して CMD コマンドを実行する
CMD コマンドを実行する別の例は、cmd.exe を使用することです。前の方法のように、Windows PowerShell 内に cmd.exe を追加することができます。
追加して実行すると、Windows PowerShell コマンドプロンプト内にコマンドラインインターフェイスが呼び出されます。
PowerShell で cmd.exe を直接使用するための構文は次のとおりです:
cmd.exe /c "<Command-String>"
cmd.exe:これがコマンドプロンプト用の実行可能ファイルです。/c:これはcmd.exeに指定された文字列によってコマンドを実行し、その後終了するよう指示するパラメータです。"<Command-String>":これが実行したいCMDコマンドまたはコマンドのシリーズです。
例のコード:
cmd.exe /c "echo Hello from CMD"
このスクリプトでは、/c パラメータを使用して cmd.exe を直接呼び出すことで、PowerShell に CMD 機能をシームレスに統合します。それに続いて、興味のあるコマンド echo Hello from CMD を配置します。cmd.exe /c を使用することで、PowerShell と CMD の間の橋を架け、PowerShell スクリプト内での CMD の親しみのあるコマンドライン環境と機能にアクセスできるようになります。
コマンド"echo Hello from CMD"は、この統合の単純ながらも説明的な例であり、基本的な CMD コマンドを利用して、私たちの望むテキストをコンソールに出力します。
出力:

この出力は、PowerShell 内での CMD echo コマンドの成功した実行を示し、メッセージ Hello from CMD を表示します。
PowerShell を使用して CMD にパイピングする
Windows PowerShell では、cmd コマンドレットをパイピングして、送信したいコマンドをコマンドプロンプトターミナルに送信することもできます。
PowerShell で CMD にパイピングすることは、主に PowerShell のコンテキスト内で CMD コマンドやバッチスクリプトを実行するために使用されます。この方法は、直接的な PowerShell の同等物がない CMD コマンドを実行する必要がある場合や、レガシーCMD スクリプトを扱っている場合に特に便利です。
PowerShell で CMD にパイピングするための基本構文は次のとおりです:
"<Command-String>" | cmd.exe /c -
"<Command-String>":これが実行したいCMDコマンドです。|:これが PowerShell のパイプオペレーターで、1つのコマンドの出力を別のコマンドへの入力として渡します。cmd.exe /c -:これがコマンドプロンプトを呼び出して、パイプ経由で渡されたコマンドを実行します。-は、cmd.exeが標準入力(stdin)からコマンドを取得することを示します。
例のコード:
"echo Hello from CMD" | cmd.exe
この例では、パイピング技術を使用して、文字列"echo Hello from CMD"を cmd.exe に送信し、PowerShell のパイピング機能と CMD のコマンド実行の優れた融合を示します。
私たちの旅は、シンプルながら効果的な CMD コマンド"echo Hello from CMD"から始まります。このコマンドは、CMD 環境で実行されると特定のメッセージを表示します。
次に、パイプオペレーター|を使用して、このコマンド文字列を cmd.exe にシームレスに転送します。このプロセスの culminates は cmd.exe /c - に観察され、ここで - 記号が重要な役割を果たし、cmd.exe にパイプラインから到着するコマンドを注意深く読み、実行するよう指示します。
出力:

この出力は、CMD echo コマンドの結果で、Hello from CMD を画面に印刷します。
Invoke-Expression を使用して PowerShell で CMD コマンドを実行する
PowerShell 内で CMD コマンドを実行するもう 1つの多用途で強力な方法は、Invoke-Expression コマンドレットを使用することです。このアプローチは、コマンドやスクリプトブロックを動的に構築して実行する必要がある場合に特に便利です。
この記事では、PowerShell で CMD コマンドを実行するための Invoke-Expression メソッドの目的、適用、使用法について詳しく説明します。
Invoke-Expression の構文は次のとおりです:
Invoke-Expression -Command "<Command-String>"
-Command:これは実行するコマンドを指定します。このパラメータは、-Cと省略することができます。"<Command-String>":これが実行されるコマンドを含む文字列です。
例のコード:
Invoke-Expression -Command "cmd.exe /c echo Hello from CMD"
私たちのスクリプトでは、Invoke-Expression の力を利用して、文字列内にカプセル化された CMD コマンドを適切に実行します。プロセスは Invoke-Expression -Command という重要なコマンドレットとパラメータの組み合わせで始まり、これにより PowerShell は提供されたコマンド文字列を解釈し、実行する能力を備えます。
次に、私たちの選択したコマンド文字列として"cmd.exe /c echo Hello from CMD"を導入します。この文字列は、cmd.exe に/c パラメータを使用するように巧みに指示し、CMD に次のコマンドを実行してそのプロセスを終了することを命じます。
この文字列の中にある echo コマンドは、私たちの実行の中心であり、CMD での Hello from CMD を出力するように設計されています。
出力:

この出力は、CMD によって処理された echo コマンドの直接的な結果であり、PowerShell の Invoke-Expression によって呼び出されます。
結論
この包括的な探求では、Windows PowerShell 環境内でコマンドプロンプト(CMD)コマンドを実行する多様性を探求し、直接的な呼び出しオペレーター&、直接的に cmd.exe を使用する方法、CMD へのコマンドをパイプで送信する革新的な技術、動的な Invoke-Expression コマンドレットの 4つの異なる方法を扱いました。それぞれのアプローチは、PowerShell の高度なスクリプト領域に CMD の親しみのある機能を統合するための独自の利点を提供します。
さらに PowerShell の専門知識を深めたい方には、カスタム PowerShell コマンドレットの作成や高度な PowerShell スクリプティング技術のような高度なトピックに取り組むことを強くお勧めします。これは、PowerShell と CMD の両者の強みを調和させた、より洗練された堅牢なスクリプティングソリューションの扉を開くことになります。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn