Powershell スクリプトから BAT ファイルを実行する
- PowerShell スクリプトを作成して実行する
- PowerShell スクリプトからバッチファイルを実行する
- 引数を使用して PowerShell スクリプトからバッチファイルを実行する
- PowerShell からバッチコマンドを実行する
- まとめ
バッチファイルは、行ごとに順番に実行される一連のコマンドで構成されます。これらのバッチファイルは、WindowsNT ファミリ用に最初にリリースされたコマンドラインインタプリタである cmd.exe で実行されます。
同様に、PowerShell ファイルは、PowerShell コマンドラインインターフェイスによって実行されるコマンドのリストで構成されるテキストファイルです。 .ps1
拡張子で保存されます。これは、Windows 用の最新のシェルおよびスクリプトツールであり、より高度な cmd バージョンです。
PowerShell スクリプトから .bat
ファイルを実行するには、PowerShell から手動で実行できます。ただし、PowerShell スクリプトに .bat
ファイルを追加して、ユーザーの介入なしに自動的に実行すると、注意が必要ないくつかの小さな間違いのために実行されない場合があります。
この記事では、PowerShell スクリプトからバッチファイルを実行するさまざまな方法について説明します。
PowerShell スクリプトを作成して実行する
PowerShell スクリプトを作成するには、メモ帳を開き、実行するコマンドを追加します。拡張子が .ps1
のファイルを保存して、PowerShell ファイルとして保存します。
任意のテキストエディタを使用してファイルを作成できます。
PowerShell スクリプトを実行するには、PowerShell ファイルを右クリックし、[PowerShell で実行]をクリックします。PowerShellISE でファイルを編集することもできます。
PowerShell スクリプトからバッチファイルを実行する
PowerShell スクリプトから .bat
ファイルを実行するには、PowerShell スクリプトに次の行を追加します。
& .\testfile1.bat
ただし、これは、testfolder
が相対パスである場合、またはパスでドライブ文字を使用している場合にのみ機能します。より安定したアプローチをとることができます。
たとえば、testfile.bat
という名前の .bat
ファイルがあります。これは、opt.txt
という名前のテキストファイルに出力を送信するコマンドで構成されています。バッチファイルを PowerShell スクリプトに追加して、PowerShell スクリプトの実行時に自動的に実行します。
バッチファイルを実行するための PowerShell スクリプトに次の行を追加します。
cmd.exe /c 'testfile1.bat'
出力:
PowerShell スクリプトからバッチファイルを実行する別の方法は、Start-Process
コマンドレットを使用することです。バッチファイルを実行するには、PowerShell スクリプトに次のコード行を追加します。
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -NoNewWindow
ここで:
-Filepath
は、バッチファイルのパスを指定します。-NoNewWindow
は、現在のウィンドウでプロセスを開始します。
管理者としてバッチファイルを実行するには、上記のコードに -verb runas
を追加します。
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -Verbose Runas -NoNewWindow
このコマンドは、.bat
ファイルに実行時に管理者権限を必要とするコマンドが含まれている場合に役立ちます。
引数を使用して PowerShell スクリプトからバッチファイルを実行する
引数を含む PowerShell スクリプトからバッチファイルを実行するには、-ArgumentList
パラメーターを使用し、文字列の配列で各引数を指定することで実行できます。上記の例を使用して、PowerShell スクリプトに次のコード行を追加します。
Start-Process -FilePath "cmd.exe" -ArgumentList @("/B", "/C", "`"", "^`"testfile1.bat^`"", "^`"$inputFilePath^`"", "`"") -NoNewWindow;
PowerShell からバッチコマンドを実行する
バッチファイルではなく、PowerShell スクリプトから直接バッチコマンドを実行することもできます。次のコード行を追加して echo
コマンドを実行し、出力を hello world
として出力します。
Start-Process "cmd.exe" '/c echo helloworld' -NoNewWindow
まとめ
そこで、PowerShell スクリプトから可能な限り安全な方法でバッチファイルを実行する方法について説明しました。また、ユーザーの介入なしに PowerShell スクリプトではなく、PowerShell から直接バッチコマンドを実行する方法についても説明しました。