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