新しいPowerShellスクリプト言語に慣れていて、PowerShellスクリプトの実行方法を学びたい場合は、正しいブログ投稿先に来ました。このブログでは、スクリプトを実行する一般的な方法と、発生する可能性のあるいくつかの問題について説明します。
前提条件
この記事では、ローカルコンピューターでPowerShellを実行する方法について説明します。一緒に進めたい場合は、この記事を開始する前に次の前提条件を満たしていることを確認してください。
- A Windows 10 computer with Administrator privileges.
- Windows PowerShellバージョン 5以上。また、PowerShell v7も使用できます。このチュートリアルでは、Windows PowerShellに焦点を当てます。なぜなら、Windowsオペレーティングシステムには既に搭載されているからです。
- 任意のテキストファイルエディタ
実行ポリシーの処理
これがWindows PowerShellスクリプトを実行しようとする最初の試みである場合、一般的な問題に遭遇する可能性があります。PowerShellはおそらく、スクリプトが「このシステムでスクリプトの実行が無効になっているため、ロードできない」というエラーメッセージを返します。
PowerShellは、実行ポリシーがRestricted、Remote Signed、またはAll Signedに設定されている場合に、上記のエラーメッセージを返します。
Restricted
は、Windowsクライアントコンピューターのデフォルトポリシーです。PowerShellを初めて使用する場合、デフォルトのポリシーはおそらくすべてのスクリプトを制限するように設定されています。
ターミナルで個々のコマンドを実行できますが、スクリプトファイルは実行できません。これには、.ps1xml
、.psm1
、または.ps1
で終わるすべてのファイルが含まれます。
Unrestricted
Unrestrictedは、任意のスクリプトを実行できますが、インターネットからダウンロードされた場合は実行前に警告が表示されます。このポリシーは通常、Windows以外のデバイスのデフォルトです。
Remote Signed
Remote Signedポリシーでは、(a) デジタルに署名されたスクリプト、または(b) ローカルコンピューターで作成された署名の有無にかかわらず、任意のスクリプトを実行できます。
インターネットからダウンロードされ、署名されていないスクリプトの場合、ファイルをアンブロックする必要があります。ファイル上で右クリックし、プロパティを選択するか、その特定のスクリプトファイルにUnblock-File
PowerShellコマンドレットを使用できます。
Remote Signedポリシーを使用するのは、インターネットからダウンロードされたスクリプトを実行する際の理想的なオプションです。
All Signed
All Signedでは、すべてのスクリプトが信頼された発行元によってデジタルに署名されている必要があります。これには、インターネットからダウンロードされたスクリプトとローカルで作成されたスクリプトが含まれます。
PowerShellの実行ポリシーの変更
実行ポリシーを変更するには:
- 最高の権限でポリシー変更を行うために、Windows PowerShellを管理者として実行するように開きます。

2. PowerShellが開かれたら、以下のPowerShellコマンドを実行してコンピュータの実行ポリシーを設定します。先述の通り、実行ポリシーには3つの異なるタイプがあります。このチュートリアルでは、便利で安全なRemoteSignedの実行ポリシーを使用しています。
このチュートリアルでは、インターネットからGetServices.ps1スクリプトファイルをダウンロードしたことを前提としていますので、実行ポリシーをRemoteSignedに設定してください。
RemoteSignedの実行ポリシーは、PowerShellがシステム上で実行する前にインターネットからダウンロードされたすべてのPowerShellスクリプトに対して暗号化署名を強制します。
3. アクションの確認を求められる出力が表示されます。ポリシーの変更を確認するために、Yを入力してEnterキーを押します。
この時点で、次の手順に進んでコンピュータ上でPowerShellスクリプトを実行するさまざまな方法を探索してください。
PowerShellスクリプトの実行方法
PowerShellスクリプトを実行するには、実際には実行するスクリプトファイルが必要です! 手元にない場合は、このZIPファイルをダウンロードして、その中にあるPS1ファイルを展開します。内部にはGetServices.ps1という単純なスクリプトファイルが含まれています。
すべてのPowerShellスクリプトは、
.ps1
拡張子で終了する必要があります。
コンソールの使用
スクリプトが準備できたら、PowerShellスクリプトファイルを実行する方法はいくつかあります。最も一般的な方法の1つは、PowerShellコンソールを介してです。
以下の手順で行います:
- 上記のようにPowerShellコンソールを開きます。
2. Set-Location
PowerShellコマンドレットまたはcd
エイリアスを使用して、スクリプトがあるファイルシステムの場所に移動します。このチュートリアルのスクリプトは、C:\Tempディレクトリにあります。
3. ドット(.
)表記を使用してスクリプトを実行します。PowerShellはコマンド名も探します。PowerShellコマンドとスクリプトを区別するには、スクリプトの前にドットを付ける必要があります。このドットは現在のディレクトリを表します。
PowerShellロケーション経由でコマンドラインからPowerShellスクリプトを実行する方法
PowerShellコンソールを介してスクリプトを実行したくない場合、またはできない場合は、古典的なコマンドライン(コマンドプロンプト)でも実行できます。
スクリプトをコマンドプロンプトから実行するには、まずPowerShell実行可能ファイル(powershell.exe
)を起動する必要があります。PowerShellの場所はC:\Program Files\WindowsPowerShell\powershell.exe
で、スクリプトパスをそのパラメータとして渡します。
PowerShell実行可能ファイルを実行する際には、単に実行中にパラメータを指定することで、任意のコンテキストでパラメータ付きのスクリプトを実行できます。例:
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
。
cmd.exe
を開いた後、以下のようにしてPowerShellスクリプトを実行できます。この例では、エンジンを実行し、スクリプトパスC:\Temp\GetServices.ps1を渡しています。
下記の例では、スクリプトを実行するためにPowerShellの場所パスを使用していることに注意してください。フォルダがどこかのPATHにない場合は、これを行う必要があります。
PowerShell 7のPowerShell場所は、通常pwsh.exeという別の実行可能ファイルを使用し、場所はC:\Program Files\PowerShell\7\pwsh.exeにあります。
以下は、cmd.exeが実行するバッチファイルを介してスクリプトを実行する方法をカバーする便利なYouTube動画です。
PowerShell ISEの使用
自分のスクリプトを作成したり、他のスクリプトを編集する場合、PowerShell ISEやVisual Studio (VS) Codeなどのスクリプトエディタを使用することになるでしょう。ISEはWindowsに付属しているため、このチュートリアルではその方法に焦点を当てています。
ISEを使用してスクリプトを呼び出すには、次の手順に従います。
- スタートメニューに移動し、PowerShell ISEを検索して開きます。

2. ファイルをクリックし、開くを選択してスクリプトを見つけます。

3. スクリプトを開いた状態で、実行ボタンをクリックしてスクリプトを実行します。このボタンは、下部にある組み込みのPowerShellターミナルでスクリプトを実行します。

サンプルスクリプトの出力
A PowerShell script can sometimes return output. This happens when the script you’re executing is built to return objects which is a fundamental component of PowerShell.
サンプルのGetServices.ps1スクリプトを実行すると、以下の内容が表示されます。このスクリプトは、ローカルのWindowsコンピュータにインストールされているすべてのサービスを返すGet-Service
コマンドレットを実行します。
スクリプト内から別のスクリプトを実行する
たとえば、GetUser.ps1というスクリプトとResetPassword.ps1というスクリプトがあるとします。 GetUser.ps1スクリプト内で、ユーザーパスワードをリセットするためにResetPassword.ps1を実行したい場合は、次のようにします。
呼び出し元のスクリプト(GetUser.ps1)内に、他のスクリプトを呼び出すためのコマンドを追加します。コマンドラインからスクリプトを呼び出す場合と同様です。
以下の例では、いくつかのオプションがあります。通常は、同じセッションまたはスコープ内で他のスクリプトを実行することを選択し、特定の理由がない限り、別のPowerShellセッションでスクリプトを実行する必要はありません。