バッチファイルから PowerShell スクリプトを実行する方法
-
バッチファイルから PowerShell スクリプトを実行するための
-File
パラメーターの使用 -
バッチファイルから PowerShell スクリプトを実行するための
-ExecutionPolicy
としてRemoteSigned
の使用 -
バッチファイルから PowerShell スクリプトを実行するための
Bypass
スイッチの使用 - 管理者として PowerShell を開いてバッチファイルから PowerShell スクリプトを実行する
- 結論

PowerShell スクリプトは、コマンドのコレクションを含む .ps1
拡張子を持つテキストファイルです。PowerShell は、それらのコマンドを順番に実行します。
バッチファイルは、コマンドのコレクションを含む .bat
拡張子のテキストファイルです。これもコマンドが順番に実行されます。
コマンドは .bat
ファイルを開くことで実行できます。このチュートリアルでは、バッチファイルから PowerShell スクリプトを実行する方法を説明します。
以下のコマンドを含む PowerShell スクリプト myscript.ps1
を作成しました。pause
コマンドは、Enterキーを押すまでバッチファイルの実行を停止します。
Write-Host "Your script is executed successfully."
Pause
バッチファイルから PowerShell スクリプトを実行するための -File
パラメーターの使用
バッチファイルから PowerShell スクリプトを実行することは、Windows 環境でタスクを自動化するための便利なテクニックです。-File
パラメータメソッドを使用すると、PowerShell スクリプトをバッチファイルのワークフローにシームレスに統合できます。
以下のコマンドは、バッチファイルで PowerShell スクリプトを実行するために使用されます。
@echo off
powershell -File script.ps1
このコードスニペットでは、最初に@echo off
を使用して実行されるコマンドの表示を抑制し、スクリプトの出力のみがユーザーに表示されるようにします。その後、-File
パラメーターと共に powershell
コマンドを使用して、script.ps1
という名前の PowerShell スクリプトを実行します。
このコマンドは PowerShell セッションを開始し、実行するスクリプトファイルを指定します。これらのコマンドを組み合わせることで、バッチファイルから PowerShell スクリプトをシームレスに実行でき、バッチファイル環境内で PowerShell コマンドを実行するプロセスを合理化します。
出力:
バッチファイルから PowerShell スクリプトを実行するための -ExecutionPolicy
として RemoteSigned
の使用
PowerShell には、どのスクリプトが実行できるか、どこから実行できるかを決定するさまざまな実行ポリシーがあります。これらの制限を回避する一つの方法は、-ExecutionPolicy
パラメーターを RemoteSigned
の値で指定することです。
この実行ポリシーは、ローカルに作成されたスクリプトをデジタル署名なしで実行できるようにし、インターネットからダウンロードされたスクリプトは信頼できる発行者によって署名される必要があります。
@echo off
powershell -ExecutionPolicy RemoteSigned -File script.ps1
提供されたコードスニペットでは、powershell -ExecutionPolicy RemoteSigned -File script.ps1
を使用して、現在の作業ディレクトリにある script.ps1
という名前の PowerShell スクリプトを実行します。-ExecutionPolicy
パラメーターを RemoteSigned
として指定することで、ローカルに作成されたスクリプトはデジタル署名なしで実行でき、インターネットからダウンロードされたスクリプトは信頼できる発行者によって署名される必要があることを確保します。
出力:
バッチファイルから PowerShell スクリプトを実行するための Bypass
スイッチの使用
制限を回避し、実行ポリシーによって課された制限なしにスクリプトを実行するために、-ExecutionPolicy
パラメーターに Bypass
の値を使用できます。この方法は、実行ポリシー制限を回避しながらバッチファイルから PowerShell スクリプトを実行する簡単な方法を提供します。
@echo off
powershell -ExecutionPolicy Bypass -File C:\path\script.ps1
提供されたコードスニペットでは、powershell -ExecutionPolicy Bypass -File C:\path\script.ps1
を利用して、C:\path\scripts
ディレクトリにある script.ps1
という名前の PowerShell スクリプトを実行します。実行ポリシーを Bypass
に設定することで、PowerShell に実行ポリシー制限を無視するよう指示し、スクリプトが妨げられることなく実行できるようにします。
出力:
次のコマンドも実行できます。
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\path\script.ps1'"
この提供されたコマンドでは、-ExecutionPolicy Bypass
を利用して PowerShell に実行ポリシーの制限を無視するよう指示し、スクリプトを制限なしで実行できるようにします。さらに、-NoProfile
パラメーターはユーザーの PowerShell プロファイルがロードされないようにするため、スクリプトのためのクリーンな実行環境を維持するのに役立ちます。
出力:
管理者として PowerShell を開いてバッチファイルから PowerShell スクリプトを実行する
PowerShell を管理者として開いてバッチファイルから PowerShell スクリプトを実行することは、管理者アクセスを必要とするスクリプトを実行するための重要な方法です。このアプローチは、PowerShell セッションが管理タスクを実行するために必要な権限を持っていることを保証します。
@echo off
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Start-Process powershell.exe -Verb RunAs -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File C:\path\script.ps1'"
このコードスニペットでは、権限のある PowerShell セッションを開始するために powershell.exe
を利用しています。Start-Process
コマンドレットの -Verb RunAs
パラメーターは、PowerShell が管理者権限で開かれることを保証します。
必要な引数(-NoProfile -ExecutionPolicy Bypass -File C:\path\script.ps1
)を新しい PowerShell セッションに渡すことにより、指定したスクリプト(script.ps1
)を権限を持って実行できるようにします。
出力:
結論
この記事では、バッチファイルから PowerShell スクリプトを実行するためのさまざまな方法を探求しました。スクリプトを直接実行するために -File
パラメーターを使用する方法、また RemoteSigned
および Bypass
パラメータを使用して実行ポリシーの制限を回避する方法を学びました。
さらに、管理者として PowerShell を開いて権限を持ってスクリプトを実行する方法についても説明しました。各方法は、バッチファイルから PowerShell スクリプトを実行するためのユニークなアプローチを提供し、実行環境に対する柔軟性と制御を提供します。