HOWTO · PowerShell

バッチファイルから 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 スクリプトを実行する - 出力 1

バッチファイルから 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 スクリプトを実行する - 出力 2

バッチファイルから 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 に実行ポリシー制限を無視するよう指示し、スクリプトが妨げられることなく実行できるようにします。

出力:

バッチファイルから PowerShell スクリプトを実行する - 出力 3

次のコマンドも実行できます。

@echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\path\script.ps1'"

この提供されたコマンドでは、-ExecutionPolicy Bypass を利用して PowerShell に実行ポリシーの制限を無視するよう指示し、スクリプトを制限なしで実行できるようにします。さらに、-NoProfile パラメーターはユーザーの PowerShell プロファイルがロードされないようにするため、スクリプトのためのクリーンな実行環境を維持するのに役立ちます。

出力:

バッチファイルから PowerShell スクリプトを実行する - 出力 4

管理者として 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 スクリプトを実行する - 出力 5

結論

この記事では、バッチファイルから PowerShell スクリプトを実行するためのさまざまな方法を探求しました。スクリプトを直接実行するために -File パラメーターを使用する方法、また RemoteSigned および Bypass パラメータを使用して実行ポリシーの制限を回避する方法を学びました。

さらに、管理者として PowerShell を開いて権限を持ってスクリプトを実行する方法についても説明しました。各方法は、バッチファイルから PowerShell スクリプトを実行するためのユニークなアプローチを提供し、実行環境に対する柔軟性と制御を提供します。