Windows PowerShell でスクリプトを実行し、実行ポリシーを設定する
Windows PowerShell スクリプトの変更または独自のものの作成を開始する前に、Windows PowerShell スクリプトを実行する方法を知っておく必要があります。 実行可能ファイルをダブルクリックするか、または選択してから Enter キーを押して実行するという考えに慣れているかもしれませんが、そのプロセスは Windows PowerShell スクリプトでは機能しません。
多くのスクリプト言語の問題の 1 つとして、あまりにも簡単に誤ってスクリプトを実行してしまうことが挙げられます。 ユーザーがスクリプトをダブルクリックするか、選択してから Enter キーを押すことで、誤ってスクリプトを実行してしまう可能性があります。 このアクションは、ファイル拡張子が非表示になっていて、マルウェアが電子メールの添付ファイルとして含まれている場合に特に問題になります。 たとえば、 .vbsreceipt.txtという名前の添付ファイルは receipt.txt として表示され、ユーザーは単純なテキスト ファイルだと思って誤って実行します。 この設定は、Windows PowerShell スクリプトでは、スクリプトを実行するために必要なアクションがあるため、問題になりません。
エクスプローラーとの統合
Windows PowerShell スクリプトの安全性を高めるために、.ps1 ファイル拡張子はメモ帳に関連付けられています。 したがって、.ps1 ファイルをダブルクリックするか、選択してから Enter キーを押しても、メモ帳で開きます。 この設定のため、ユーザーをだまして、Windows PowerShell スクリプトをダブルクリックさせるか、選択してから Enter キーを押させても、実行できません。
Windows PowerShell スクリプトを右クリックするか、コンテキスト メニューをアクティブ化した場合、次の 3 つのオプションがあります。
- 開きます。 このオプションを選択すると、スクリプトがメモ帳で開きます。
- PowerShell を使用して実行します。 このオプションを選択すると、スクリプトが実行されますが、スクリプトの完了時に Windows PowerShell プロンプトは開いたままになりません。
- 編集。 このオプションでは、スクリプトは Windows PowerShell ISE で開きます。
ほとんどの場合、スクリプトの実行時に Windows PowerShell プロンプトを開いたままにしておく必要があります。 このタスクを実行するには、既に開いている Windows PowerShell プロンプトからスクリプトを実行します。
PowerShell プロンプトでスクリプトを実行する
コマンド プロンプトで実行可能ファイルを実行するには、その名前を入力して現在のディレクトリで実行します。 たとえば、現在のディレクトリが C:\app の場合、 C:\app\app.exe を実行する app.exeを入力できます。 このプロセスを使用して Windows PowerShell スクリプトを実行することはできません。現在のディレクトリが検索されないためです。
Windows PowerShell プロンプトで Windows PowerShell スクリプトを実行するには、次の方法を使用します。
- スクリプトへの完全なパスを入力します。たとえば、 C:\Scripts\MyScript.ps1します。
- スクリプトへの相対パスを入力します。たとえば、 \Scripts\MyScript.ps1します。
- 現在のディレクトリを参照します。たとえば、 .\MyScript.ps1です。
スクリプト実行ポリシー
Windows PowerShell スクリプトを Windows コンピューターで実行できるかどうかを制御できます。 このタスクを実行するには、コンピューターで実行ポリシーを設定します。 コンピューターの既定の実行ポリシーは、オペレーティング システムのバージョンによって異なります。 現在の構成を確認するには、 Get-ExecutionPolicy コマンドレットを使用します。
実行ポリシーのオプション:
- 制限付き。 スクリプトの実行は許可されません。
- AllSigned。 スクリプトは、デジタル署名されている場合にのみ実行できます。
- RemoteSigned。 ダウンロードしたスクリプトは、デジタル署名されている場合にのみ実行できます。
- 無制限。 すべてのスクリプトを実行できますが、ダウンロードした署名されていないスクリプトを実行すると、確認プロンプトが表示されます。
- バイパス。 すべてのスクリプトは、プロンプトなしで実行されます。
注意
スクリプト実行ポリシーを設定すると、セーフティ ネットが得られ、信頼されていないスクリプトが誤って実行されるのを防ぐことができます。 ただし、実行ポリシーはいつでもオーバーライドできます。
Set-ExecutionPolicy コマンドレットを使用して、コンピューターで実行ポリシーを設定できます。 ただし、この設定は、多くのコンピューターにわたって管理するのが困難です。 多くのコンピューターに対して実行ポリシーを構成する場合は、[ コンピューターの構成]、[ポリシー]、[管理用テンプレート]、[Windows コンポーネント]、[Windows PowerShell]、[スクリプト実行グループ ポリシーの有効化 ] の設定を使用して、ローカル設定をオーバーライドできます。
個々の Windows PowerShell インスタンスの実行ポリシーをオーバーライドできます。 この設定は、会社のポリシーで実行ポリシーを 制限付きとして設定する必要があるが、スクリプトを時々実行する必要がある場合に便利です。 実行ポリシーをオーバーライドするには、-ExecutionPolicy パラメーターを使用して PowerShell.exe を実行します。
Powershell.exe -ExecutionPolicy ByPass
インターネットからダウンロードしたスクリプトを変更した場合でも、スクリプトにはダウンロードしたファイルとして識別する属性が残っています。 スクリプトからその状態を削除するには、 Unblock-File コマンドレットを使用します。