Windows 11でPowerShellスクリプトファイルを書き込んで実行する方法

PowerShellは、一般的な管理タスクを自動化するためにMicrosoftによって開発されたコマンドラインツールです。 スクリプトは、*.ps1ファイル拡張子を持つテキストファイルに保存されたPowerShellコマンドのコレクションです。PowerShellスクリプトを実行すると、インタプリタがファイルを読み込み、コマンドを順次実行します。

PowerShellスクリプトは、任意のテキストエディタ(たとえばNotePadでも)を使用して作成できます。ただし、PowerShellスクリプトエディタを使用することが推奨されています。Windowsに含まれるデフォルトのエディタは、PowerShell 統合スクリプト環境(PowerShell ISE)です。これには、カラーコーディング、コード補完、構文チェック、デバッグ、自動保存、クラッシュ保護などの便利な機能が含まれています。

広告

Microsoftには、Windows、Linux、およびmacOS向けに利用可能な無料のクロスプラットフォームのコードエディターであるVisual Studio Code(VS Code)があります。拡張機能を通じてさまざまなプログラミング言語をサポートしており、PowerShellを含むインストール可能な拡張機能があります。

Visual Studio Codeの利点の1つは、最新バージョンのPowerShellをサポートしていることです。一方、PowerShell ISEはPowerShellバージョン5.1までしかサポートしていません。

PowerShellスクリプトの実行方法(クイックガイド)

以下は、PowerShellスクリプトを実行する方法の簡単な概要です。この方法は、必要なパラメータを持たず、コマンドプロンプトに出力を返さないPowerShellスクリプトに適しています。

  1. ファイルエクスプローラーでPowerShellスクリプトを右クリックします。
  2. コンテキストメニューからPowerShellで実行を選択します。
  3. スクリプトはBypassの実行ポリシーで実行されます。コンピューターまたはユーザーの実行ポリシーは変更されません。

PowerShellスクリプトの作成および実行の詳細については、引き続きお読みください!

広告

PowerShellスクリプトの作成方法

PowerShellスクリプトを作成する方法はいくつかあります:

  • クロスプラットフォームのコードエディターVisual Studio Codeを使用する
  • PowerShell ISEを使用する
  • または他のテキストエディタ、例えばNotePad

Visual Studio CodeでPowerShellスクリプトを作成する

Visual Studio CodeはWindowsに標準で用意されていないため、専用のVisual Studioウェブサイトからダウンロードする必要があります。今回はWindowsディストリビューションをダウンロードする必要がありますが、64ビット、32ビット、ARMシステム用が用意されています。

アプリをインストールした後に必要な手順は以下の通りです。まず、スタートメニューからVisual Studio Codeを開く必要があります。

Opening Visual Studio Code from the Windows 11 Start Menu

PowerShell拡張機能をインストールする

拡張機能アイコンをクリックするか、キーボードショートカットCtrl + Shift + Xを使用して拡張機能メニューを開きます。

広告

Open the extensions menu from the left sidebar

検索ボックスにpowershellと入力し、以下の図に示すように最もダウンロード数の多いオプションを選択して、Microsoftが提供する拡張機能をダウンロードします。その後、インストールをクリックします。

Find the PowerShell extension

インストールが完了すると、確認は表示されません。ただし、インストールボタンが無効化およびアンインストールのオプションに置き換わっていることがわかります。

Disable and Uninstall options appear after installing the extension

Visual Studio CodeでPowerShellスクリプトを作成する方法

新しいPowerShellスクリプトを作成するには、ファイル新規ファイルに移動するか、キーボードショートカットCtrl + Nを使用します。

Creating a new PowerShell script

新しいファイルがPowerShellスクリプトであることを指定するには、左下のプレーンテキストをクリックするか、スクリプトペインで言語を選択します。どちらのオプションを選択しても、言語モードを選択ボックスに移動します。そこでpowershellと入力し、PowerShellを選択します。

Specify that the new file is a PowerShell script

これにより、PowerShell拡張がトリガーされ、ファイル名の横にあるアイコンがPowerShellに変わるのがわかります。また、PowerShellコンソールが開始され、PowerShellコマンドやスクリプトを実行できるようになります。

Starting the PowerShell Console

同じ結果を得るためには、ファイルを*.ps1拡張子で保存することもできます。

次に、以下のコマンドをスクリプトペインに入力すると、色分け、コマンドの自動補完、構文のヒントなどの利点がわかります。

Write-Host "This is a Visual Studio Code script"
Write-Host "Writing PowerShell Scripts is fun!"
How to type commands in the script pane

注意:3行目はコマンド補完オプションを示すデモンストレーションです。

ファイルを保存するには、ファイルメニューからファイル保存を使用します。また、キーボードショートカットCtrl + Sを使用することもできます。

次に、アクセスしやすい場所を使用し、ファイル名を指定し、ファイル拡張子として*.ps1を指定し、保存をクリックします。この例では、ファイルをC:\TEMP\MyVSCodeScript.ps1に保存しています。

Save your file as a .ps1

VS Codeでスクリプトを実行する方法については、後の記事で説明します。

Windows PowerShell ISEでスクリプトを作成する

PowerShell ISE を起動するには、スタートボタン(または検索ボタン)をクリックし、PowerShell ISE と入力を開始します。アプリケーションが異なるオープンオプションで検索結果に表示されます。すべてのコマンドが正しく実行され、ブロックされないことを確認するために、管理者として実行を使用することをお勧めします。

You need to run the PowerShell ISE as an administrator

それでは、PowerShell ISE でスクリプトを作成してみましょう。次の行を書き込み、カラーコーディング、コマンドの自動補完、構文ヒントなどの便利な機能に気付くことができます。

Write-Host "This is a PowerShell ISE script"
Write-Host "Writing PowerShell Scripts is fun!"

 

Creating a script in the PowerShell ISE

注: 3行目は、コマンド補完オプションを示すためだけのデモンストレーションのためのものです。

次に、コマンドのリストをPowerShellスクリプトとして保存します。そのためには、ツールバーのフロッピーディスクアイコンをクリックし、ファイル > 保存 をファイルメニューから選択します。また、キーボードショートカット Ctrl + S を使用することもできます。

名前を付けて保存のダイアログで、フォルダを選択し、ファイル名を指定し、*.ps1 拡張子を指定し、保存をクリックします。この例では、次の名前を提供します: C:\TEMP\MyPowerShellISEScript.ps1。

Saving your PowerShell script

NotePadでスクリプトを作成する

PowerShellスクリプトを書くために基本的なテキストエディタを使用することはお勧めできませんが、これは可能です。NotePad で例を見てみましょう。

  • NotePad を開き、次のコマンドを入力します。
Write-Host "This is a Notepad script"
Write-Host "Writing PowerShell Scripts is fun!
You can write PowerShell scripts in NotePad
  • スクリプトを保存するには、ファイル > 保存 を選択します。
  • 名前を付けて保存のダイアログで、フォルダを選択し、*.ps1 拡張子を持つファイル名を指定します。この例では、次の名前を使用します: C:\TEMP\MyNotepadScript.ps1。

PowerShellスクリプトの実行方法

A PowerShell script (*.ps1 file) can be run in the PowerShell console, which recognizes the *.ps1 file type and runs the commands sequentially. You may open the script as a file in code editors like the PowerShell ISE and Visual Studio Code, and run the whole script in the console pane or run only a part of it.

PowerShellスクリプトの実行ポリシーを変更して有効にする方法

PowerShellの実行ポリシーは、PowerShellが構成ファイルをロードし、スクリプトを実行する条件を制御するセーフティ機能です。これは実行ポリシーを簡単に回避できるため、セキュリティシステムではありませんが、ユーザーが意図せずにスクリプトを実行するのを防ぐ役割があります。

Windows 11のデフォルトの実行ポリシーは制限付きです。Windows以外のOSでは、デフォルトの実行ポリシーは制限なしで、変更することはできません。

現在の実行ポリシーを確認するには、PowerShellコマンドGet-ExecutionPolicyを使用します。

Windowsで実行ポリシーを変更するには、Set-ExecutionPolicyコマンドレットを使用します。

 Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

異なる実行ポリシーについては、次のトピックで説明します。

PowerShell実行ポリシーの変更

Windowsでは、ローカルマシン、現在のユーザー、またはPowerShellプロセスの実行ポリシーを設定できます。

利用Get-ExecutionPolicy -Listコマンドを使用して、利用可能なスコープをリストアップします。

Get-ExecutionPolicy -List

順序が重要ですので、最も高い設定項目が優先されます。たとえば、グループポリシーを使用して実行ポリシーを設定した場合、他のものよりも優先されます。

The highest configured item takes precedence
Policy Description
Restricted The default execution policy for Windows client OSes. It does not allow ANY scripts (*.ps1 files) to be executed. Still, you may run individual commands.
RemoteSigned The default execution policy for Windows Server. It Allows running scripts that are created locally. Scripts downloaded from untrusted locations, like the Internet, e-mail, messengers, etc. must be digitally signed by a trusted publisher. You may use the command Unblock-File to allow a script to run on the system.  
Unrestricted The default execution policy for non-Windows computers, and it cannot be changed. It allows unsigned scripts to run, but it shows a warning message and asks for confirmation if scripts are coming from an untrusted location.
AllSigned It requires all scripts running on the machine to be digitally signed by a trusted publisher, no matter if they are created locally on the machine or downloaded from the Internet.
Bypass It allows all scripts to run, like Unrestricted, but no confirmation is required.
Undefined There is no execution policy set on the specified scope. If all scopes are set as undefined, then the default execution policies are applied.
The different PowerShell execution policies

PowerShellでスクリプトを実行できるようにするには、Set-ExecutionPolicy -ExecutionPolicy <PolicyName>コマンドを使用する必要があります。

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

デフォルトでは、このコマンドは選択したポリシーをローカルマシンスコープに適用します。別のスコープを指定する場合は、-Scopeパラメータを使用し、スコープの名前を指定する必要があります。

たとえば、次のコマンドは、現在のユーザーに対して実行ポリシーを無制限に設定します。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

PowerShellでスクリプトを実行する

PowerShellコンソールを開くには、[スタート]ボタン(または検索ボタン)をクリックし、powershellと入力して、管理者として実行をクリックします。

Run the PowerShell console as an administrator

PowerShellコンソールでスクリプトを実行するには、次のいずれかの方法を使用できます。

  • スクリプトへのフルパスを使用する、たとえば:C:\TEMP\MyNotepadScript.ps1
  • または、ファイルがあるフォルダーからスクリプト名だけを使用する:.\MyNotepadScript.ps1

Visual Studio CodeでPowerShellスクリプトを実行する

Visual Studio Codeでスクリプトを実行するには、まずアプリケーションを起動し、以前に作成したスクリプトファイル(C:\TEMP\MyVSCodeScript.ps1)を開く必要があります。

  • ファイルを選択するには、ファイル > 開く ファイル を選択するか、キーボードショートカット Ctrl + O を使用します。
  • VS Code でスクリプトを読み込んだら、右上隅の 実行 ボタンをクリックするか、キーボードの F5 キーを押して実行できます。

スクリプトの出力はコンソールペインで表示されます。

The script is being executed in the console pane

スクリプトの一部だけを実行する (選択範囲を実行) こともできます。これは、スクリプトを作成していて、その一部が期待どおりに動作するか確認したい場合に役立ちます。

  • 実行したいスクリプトの部分をハイライトします。
  • コンソールの右上隅にある 選択範囲を実行 をクリックするか、キーボードの F8 キーを押します。

この場合、VS Code はコンソールペインで選択されたコード行だけを実行します。

How to run only a part of a script

PowerShell ISE でのスクリプトの実行

PowerShell ISE でのスクリプトの実行は、ほとんど同じです。

  • PowerShell ISE を起動します。
  • 以前のデモンストレーションからスクリプトを開く (この場合 – C:\TEMP\MyPowerShellISEScript.ps1) には、ファイル > 開く、またはツールバーの 開く アイコン、またはキーボードショートカット Ctrl + O を使用します。
  • スクリプトファイルを選択して 開く をクリックします。

スクリプト全体を実行するには、ツールバーの 実行 ボタンを使用するか、キーボードの F5 キーを押します。これにより、コンソールペインでスクリプトファイルが実行され、結果が返されます。

Running a script in the PowerShell ISE

スクリプトの一部だけを実行する必要がある場合は、セクションをハイライトし、ツールバーから選択範囲の実行を選択するか、キーボードのF8キーを押してください。再度、PowerShell ISEは選択されたコード行だけを実行します。

You can also execute only part of the script

コマンドプロンプトからPowerShellスクリプトを実行する

*.ps1ファイルがPowerShellによって解釈される場合、コマンドプロンプト(CMD)はPowerShellスクリプトを直接扱うことができません。CMDでPowerShellスクリプトを実行したい場合は、以下に示すように、-FileパラメーターでPowerShellプロセスを呼び出す必要があります。

PowerShell -File C:\TEMP\MyNotepadScript.ps1.

結論

PowerShellスクリプトは、繰り返しのあるタスクを自動化するための素晴らしい方法です。一般的なルールに従いましょう:「一度以上行う必要があることがあれば、それをスクリプト化する」、そしてあなたは間違っていません!

関連記事:

Source:
https://petri.com/how-to-write-and-run-a-powershell-script-file-on-windows-11/