PowerShell で CMD コマンドを実行する

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell 呼び出し演算子&の使用
  2. cmd.exe を使用した CMD コマンドの実行
  3. PowerShell による CMD へのパイピング
PowerShell で CMD コマンドを実行する

多くの従来のコマンドプロンプト(CMD)コマンドは、Windows PowerShell スクリプト環境で機能します。PowerShell 環境では、これらのコマンドが、ping などの最もよく使用されるコマンドから、エイリアスを使用する従来の環境からの tracert などの最も情報量の多いコマンドに転送されます。

ただし、コマンドプロンプトターミナルで実行中のコマンドの一部は、Windows PowerShell のスクリプト環境では機能しません。この記事では、それらを Windows PowerShell に正しく変換する方法について説明します。

PowerShell 呼び出し演算子&の使用

レガシーCMD は、特定のパスにある実行可能ファイル形式(.exe)でコマンドラインプログラムを実行し、その後に実際のコマンドを実行すると、正常に機能します。

以下の構文例を使用すると、CMD 内でスクリプトを実行すると、アバストコマンドラインスキャナーを使用してクイックスキャンを実行でき、正常に機能します。

サンプルコード:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

ただし、同じ構文を使用して Windows PowerShell で実行すると、例外エラーが発生します。エラーの背後にある理由は、Windows PowerShell が二重引用符""をリテラル文字列値と見なし、構文に付随する/Quick パラメーターがどのネイティブライブラリでも使用できないためです。

さらに、Windows PowerShell で引用符で囲まれたパスのみを実行すると、実行可能ファイル自体を実行するのではなく、文字列値のみが出力されます。

サンプルコード:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe"

出力:

C:\Program Files\AVAST Software\Avast\ashCmd.exe

この問題を解決するには、コマンドラインの先頭で呼び出し演算子またはアンパサンド記号&を呼び出して、Windows PowerShell で実行可能パスを適切に実行します。

& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

PowerShell 環境で呼び出し演算子を使用すると、文字列パスが実行可能ファイルへの実際のパスとして扱われます。したがって、付随するコマンドパラメータを使用してスクリプトを直接実行します。

cmd.exe を使用した CMD コマンドの実行

CMD コマンドを実行する別の例は、cmd.exe を使用することです。以前の方法と同様に、Windows PowerShell 内に cmd.exe を追加できます。

追加して実行すると、Windows PowerShell コマンドプロンプト内のコマンドラインインターフェイスが呼び出されます。

cmd.exe /c where python

パラメータ/c は、入力されたコマンドを実行し、cmd.exe コマンドラインインタプリタを終了します。

以下の構文を実行して、他のパラメーターの詳細について、cmd.exe コマンドのヘルプドキュメントを表示できます。さらに、PowerShell と CMD の両方のコマンドラインインターフェイスで以下のコマンドを実行できます。

cmd.exe /?

PowerShell による CMD へのパイピング

Windows PowerShell では、cmd コマンドレットを送信するコマンドにパイプすることで、コマンドプロンプトターミナルにコマンドを送信することもできます。

以下の構文例では、ローカルコンピューターの IP 構成を照会する要求が CMD コマンドラインインターフェイスに送信されます。コードを実行した後、CMD ターミナルは終了し、ユーザーは行の先頭にある PS で示される PowerShell ターミナルに戻ります。

サンプルコード:

"Ipconfig /all" | cmd
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn