Windows への PowerShell のインストール

Windows に PowerShell をインストールする方法は複数あります。 各インストール方法は、異なるシナリオとワークフローをサポートするように設計されています。 目的に合わせて方法を選択してください。

  • Winget - Windows クライアントに PowerShell をインストールする場合に推奨される方法
  • MSI パッケージ - Windows Server とエンタープライズ展開シナリオに最適な選択肢
  • ZIP パッケージ - "サイド ロード" または複数のバージョンをインストールする場合に最も簡単な方法
    • Windows Nano Server、Windows IoT、Arm ベースのシステムにはこの方法を使用してください
  • .NET グローバル ツール - 他のグローバル ツールをインストールして使用する .NET 開発者に適した選択肢です
  • Microsoft Store パッケージ - PowerShell の一時的なユーザー向けの簡単なインストール方法ですが、制限があります

注意

この記事のインストール コマンドは、PowerShell の最新の安定したリリース用です。 別のバージョンの PowerShell をインストールするには、必要なバージョンに合わせてコマンドを調整します。 次のリンクを使用すると、GitHub の PowerShell リポジトリの各バージョンのリリース ページに移動します。

すべてのパッケージのダウンロード リンクは、リリース ページの [Assets] セクションにあります。 [Assets] セクションは折りたたまれている場合があります。その場合は、クリックして展開する必要があります。

Windows パッケージ マネージャーの Winget は、ユーザーが Windows クライアント コンピューター上のアプリケーションの検出、インストール、アップグレード、削除、および構成を行うことができるコマンドライン ツールです。 このツールは、Windows パッケージ マネージャー サービスに対するクライアント インターフェイスです。 winget コマンドライン ツールは、既定では、アプリ インストーラーとして Windows 11 と最新バージョンの Windows 10 にバンドルされています。

注意

システム要件とインストール手順の一覧については、winget に関するドキュメントを参照してください。 Winget は現在、Windows サーバーでは実行されません。

次のコマンドを使用すると、公開済みの winget パッケージを使用して PowerShell をインストールできます。

最新バージョンの PowerShell を検索します

winget search Microsoft.PowerShell
Name               Id                           Version   Source
-----------------------------------------------------------------
PowerShell         Microsoft.PowerShell         7.4.1.0   winget
PowerShell Preview Microsoft.PowerShell.Preview 7.4.0.101 winget

id パラメーターを使用して PowerShell または PowerShell プレビューをインストールします

winget install --id Microsoft.Powershell --source winget
winget install --id Microsoft.Powershell.Preview --source winget

Note

X86 または X64 プロセッサを使う Windows システムの場合、winget によって MSI パッケージがインストールされます。 Arm64 プロセッサを使うシステムの場合、winget によって Microsoft Store (MSIX) パッケージがインストールされます。 詳細については、「Microsoft Store からインストールする」を参照してください。

MSI パッケージのインストール

Windows に PowerShell をインストールするには、次のリンクを使用して GitHub からインストール パッケージをダウンロードします。

ダウンロードしたら、インストーラ ファイルをダブルクリックし、プロンプトの指示に従います。

インストーラーにより、Windows の [スタート] メニューにショートカットが作成されます。

  • パッケージは、既定で $env:ProgramFiles\PowerShell\<version> にインストールされます。
  • PowerShell は、スタート メニューまたは $env:ProgramFiles\PowerShell\<version>\pwsh.exe から起動できます。

Note

PowerShell 7.4 は新しいディレクトリにインストールされ、Windows PowerShell 5.1 と side-by-side 実行されます。 PowerShell 7.4 はインプレース アップグレードであり、以前のバージョンの PowerShell 7 は削除されます。 PowerShell のプレビュー バージョンは、他のバージョンの PowerShell と一緒にインストールできます。

  • PowerShell 7.4 は $env:ProgramFiles\PowerShell\7 にインストールされます
  • $env:ProgramFiles\PowerShell\7 フォルダーは $env:PATH に追加されます

PowerShell 7.4 を他のバージョンと side-by-side 実行する場合、ZIP インストール手法を利用し、他のバージョンを別のフォルダーにインストールしてください。

PowerShell 7.2 以降での Microsoft Update のサポート

PowerShell 7.2 以降では Microsoft Update がサポートされています。 この機能を有効にすると、従来の Microsoft Update (MU) の管理フローで、PowerShell 7 の最新の更新プログラムが提供されます。これは、Windows Update for Business、WSUS、Microsoft Endpoint Configuration Manager、または設定の対話型 MU ダイアログのいずれでも同じです。

PowerShell の MSI パッケージには、次のコマンド ライン オプションが含まれています。

  • USE_MU - このプロパティには、次の 2 つの有効値があります。
    • 1 (既定値) - Microsoft Update、WSUS、または Configuration Manager による更新にオプトインします
    • 0 - Microsoft Update、WSUS、または Configuration Manager による更新にオプトインしません
  • ENABLE_MU
    • 1 (既定値) - 自動更新用の Microsoft Update の使用にオプトインします
    • 0 - Microsoft Update の使用にオプトインしません

注意

更新プログラムの有効化は、以前のインストールまたは手動構成で設定されている可能性があります。 ENABLE_MU=0 を使用しても、既存の設定は削除されません。 また、この設定は、管理者によって制御されるグループ ポリシーの設定で無効にできます。

詳細については、PowerShell の Microsoft Update の FAQ に関する記事を参照してください。

コマンド ラインから MSI パッケージをインストールする

MSI パッケージはコマンド ラインからインストールできるため、管理者はユーザーの介入なしにパッケージを展開できます。 MSI パッケージには、インストールのオプションを制御するための次のプロパティが含まれます。

  • ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL - このプロパティでは、エクスプローラーのコンテキスト メニューに Open PowerShell 項目を追加するためのオプションを制御します。
  • ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL - このプロパティでは、エクスプローラーのコンテキスト メニューに Run with PowerShell 項目を追加するためのオプションを制御します。
  • ENABLE_PSREMOTING - このプロパティでは、インストール中に PowerShell リモート処理を有効にするためのオプションを制御します。
  • REGISTER_MANIFEST - このプロパティでは、Windows イベント ログのマニフェストを登録するためのオプションを制御します。
  • ADD_PATH - このプロパティでは、Windows PATH 環境変数に PowerShell を追加するためのオプションを制御します。
  • DISABLE_TELEMETRY - このプロパティは、POWERSHELL_TELEMETRY_OPTOUT 環境変数を設定して PowerShell のテレメトリを無効にするオプションを制御します。
  • INSTALLFOLDER - このプロパティは、インストール ディレクトリを制御します。 既定値は、$env:ProgramFiles\PowerShell\ です。 これは、インストーラーによってバージョン管理されたサブフォルダーが作成される場所です。 バージョン管理されたサブフォルダーの名前を変更することはできません。
    • 現在のリリースでは、バージョン管理されたサブフォルダーは 7 です
    • プレビュー リリースの場合、バージョン管理されたサブフォルダーは 7-preview です

すべてのインストール オプションを有効にして PowerShell をサイレント インストールする方法を、次の例に示します。

msiexec.exe /package PowerShell-7.4.1-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1

Msiexec.exe 用のコマンド ライン オプションの完全な一覧については、コマンド ライン オプションに関するページをご覧ください。

ZIP パッケージのインストール

PowerShell バイナリ ZIP アーカイブは、高度な展開シナリオ用に用意されています。 現在のリリースのページから、次のいずれかの ZIP アーカイブをダウンロードします。

ファイルのダウンロード方法によっては、Unblock-File コマンドレットを使用して、ファイルのブロックを解除することが必要になる場合があります。 任意の場所にコンテンツを解凍し、そこから pwsh.exe を実行します。 MSI パッケージをインストールする場合とは異なり、ZIP アーカイブをインストールしても、前提条件は確認されません。 WSMan 経由でのリモート処理を正常に動作させるために、前提条件を満たしていることを確かめてください。

この方法を使用して、Microsoft Surface Pro X のようなコンピューターに ARM ベース バージョンの PowerShell をインストールします。最適な結果を得るには、PowerShell を $env:ProgramFiles\PowerShell\7 フォルダーにインストールします。

.NET グローバル ツールとしてインストールする

.NET Core SDK が既にインストールされている場合は、PowerShell を .NET グローバル ツールとしてインストールできます。

dotnet tool install --global PowerShell

dotnet tool install によって、$env:PATH 環境変数に $HOME\.dotnet\tools が追加されます。 ただし、現在実行中のシェルには更新された $env:PATH が設定されていません。 新しいシェルからは、「pwsh」と入力すると PowerShell を起動できます。

Microsoft Store からインストールする

PowerShell は Microsoft Store からインストールできます。 PowerShell のリリースは、Microsoft Store サイトまたは Windows の Store アプリケーションで見つけることができます。

Microsoft Store パッケージの利点:

  • Windows に直接組み込まれた自動更新
  • Intune や Configuration Manager など、他のソフトウェア配布メカニズムとの統合
  • x86、x64、または Arm64 プロセッサを使用して Windows システムにインストールできる

既知の制限事項

既定では、Windows Store パッケージは、一部のファイルシステムとレジストリの場所へのアクセスを仮想化するアプリケーション サンドボックスで実行されます。 仮想化されたファイルとレジストリの場所への変更は、アプリケーション サンドボックスの外部では保持されません。

このサンドボックスでは、アプリケーションのルート フォルダーへの変更がすべてブロックされます。 $PSHOME に格納されているシステムレベルの構成設定は変更できません。 これには WSMAN 構成が含まれます。 これにより、リモート セッションが PowerShell のストアベース インストールに接続できなくなります。 ユーザーレベル構成と SSH リモート処理がサポートされていません。

次のコマンドは、$PSHOME に書き込む必要があります。 これらのコマンドは、PowerShell の Microsoft Store インスタンスではサポートされません。

  • Register-PSSessionConfiguration
  • Update-Help -Scope AllUsers
  • Enable-ExperimentalFeature -Scope AllUsers
  • Set-ExecutionPolicy -Scope LocalMachine

詳細については、「Windows でパッケージ化されたデスクトップ アプリが動作するしくみについて」を参照してください。

PowerShell 7.2 の変更点

PowerShell 7.2 以降、PowerShell パッケージは、ファイルとレジストリの仮想化の除外対象となりました。 仮想化されたファイルとレジストリの場所への変更は、アプリケーション サンドボックスの外部で保持されます。 ただし、アプリケーションのルート フォルダーへの変更は、引き続きブロックされます。

重要

この除外対象を機能させるには、Windows ビルド 1903 以降で実行する必要があります。

プレビュー バージョンのインストール

PowerShell 7 のプレビュー リリースは $env:ProgramFiles\PowerShell\7-preview にインストールされるため、PowerShell のプレビュー以外のリリースとサイドバイサイドで実行できます。 PowerShell 7.4 は、次回のプレビュー リリースです。

既存のインストールのアップグレード

アップグレード時に最適な結果を得るには、最初に PowerShell をインストールしたときと同じインストール方法を使用してください。 PowerShell がどのようにインストールされたかが分からない場合は、現在のセッションが実行している PowerShell を含むディレクトリを常に指す $PSHOME 変数の値を確認できます。

  • 値が $HOME\.dotnet\tools の場合、PowerShell は .NET グローバル ツールを使用してインストールされています。
  • 値が $Env:ProgramFiles\PowerShell\7 の場合、PowerShell は MSI パッケージとして、または X86 または x64 プロセッサを搭載したコンピューターに Winget を使用してインストールされています。
  • 値が $Env:ProgramFiles\WindowsApps\ で始まる場合、PowerShell は Microsoft Store パッケージとして、または ARM プロセッサを搭載したコンピューターに Winget を使用してインストールされています。
  • 値がそれ以外の場合は、PowerShell は ZIP パッケージとしてインストールされている可能性があります。

MSI パッケージを使用してインストールした場合、その情報は [プログラムと機能] コントロール パネルにも表示されます。

PowerShell が Winget を使用してアップグレードできるかを確認するには、次のコマンドを実行します。

winget list --name PowerShell --upgrade-available

利用可能なアップグレードがある場合、出力には利用可能な最新バージョンが表示されます。

Note

PowerShell は、アップグレード時に LTS バージョンから LTS 以外のバージョンにアップグレードされません。 これは LTS の最新バージョンへのアップグレード (たとえば、7.2.3 から 7.2.18) のみを行います。 LTS リリースから新しい安定版または次の LTS にアップグレードするには、そのリリースの MSI を使用して新しいバージョンをインストールする必要があります。

インストールされているバージョンが LTS バージョンでない場合、PowerShell は最新の安定版バージョンにアップグレードします。

Windows 10 IoT Enterprise への展開

Windows 10 IoT Enterprise には、PowerShell 7 の展開に使用できる Windows PowerShell が付属しています。

# Replace the placeholder information for the following variables:
$deviceip = '<device ip address'
$zipfile = 'PowerShell-7.4.1-win-arm64.zip'
$downloadfolder = 'u:\users\administrator\Downloads'  # The download location is local to the device.
    # There should be enough  space for the zip file and the unzipped contents.

# Create PowerShell session to target device
Set-Item -Path WSMan:\localhost\Client\TrustedHosts $deviceip
$S = New-PSSession -ComputerName $deviceIp -Credential Administrator
# Copy the ZIP package to the device
Copy-Item $zipfile -Destination $downloadfolder -ToSession $S

#Connect to the device and expand the archive
Enter-PSSession $S
Set-Location u:\users\administrator\Downloads
Expand-Archive .\PowerShell-7.4.1-win-arm64.zip

# Set up remoting to PowerShell 7
Set-Location .\PowerShell-7.4.1-win-arm64
# Be sure to use the -PowerShellHome parameter otherwise it tries to create a new
# endpoint with Windows PowerShell 5.1
.\Install-PowerShellRemoting.ps1 -PowerShellHome .

PowerShell リモート処理を設定すると、エラー メッセージが表示され、デバイスから切断されます。 PowerShell で WinRM を再起動する必要があります。 これにより、デバイス上の PowerShell 7 エンドポイントに接続できます。


# Be sure to use the -Configuration parameter. If you omit it, you connect to Windows PowerShell 5.1
Enter-PSSession -ComputerName $deviceIp -Credential Administrator -Configuration PowerShell.7.4.1

Windows 10 IoT Core への展開

PowerShell 7 の展開に使用できる IOT_POWERSHELL 機能を取り込む場合、Windows 10 IoT Core によって Windows PowerShell が追加されます。 上記で Windows 10 IoT Enterprise に対して定義した手順は、IoT Core にも適用できます。

配布イメージに最新の PowerShell を追加する場合は、Import-PSCoreRelease コマンドを使用して、ワークスペースにパッケージを取り込み、さらに OPENSRC_POWERSHELL 機能をご利用のイメージに追加します。

注意

ARM64 アーキテクチャの場合、IOT_POWERSHELL を含めると Windows PowerShell は追加されません。 そのため、zip ベースのインストールは機能しません。 イメージに追加するには、Import-PSCoreRelease コマンドを使用する必要があります。

Nano Server への展開

以下の手順では、Nano Server が "ヘッドレス" OS であり、あるバージョンの PowerShell が既に実行されていることを前提としています。 詳細については、Nano Server Image Builder のドキュメントをご覧ください。

PowerShell バイナリを展開するには、2 つの方法があります。

  1. オフライン: Nano Server VHD をマウントし、zip ファイルの中身をマウント イメージ内の選択した場所に展開します。
  2. オンライン: zip ファイルを PowerShell セッションを介して転送し、選択した場所にそれを展開します。

どちらの場合も、Windows x64 ZIP リリース パッケージが必要です。 PowerShell の "管理者" インスタンス内でコマンドを実行してください。

PowerShell のオフラインでの展開

  1. お好みの zip ユーティリティを使用して、マウントされた Nano Server イメージ内のディレクトリにパッケージを解凍します。
  2. イメージをマウント解除し、ブートします。
  3. Windows PowerShell の組み込みインスタンスに接続します。
  4. 別のインスタンスのテクニック」の、リモート エンドポイントを作成する手順に従います。

PowerShell のオンラインでの展開

次の手順に従って、PowerShell を Nano Server に展開します。

# Replace the placeholder information for the following variables:
$ipaddr = '<Nano Server IP address>'
$credential = Get-Credential # <An Administrator account on the system>
$zipfile = 'PowerShell-7.4.1-win-x64.zip'
# Connect to the built-in instance of Windows PowerShell
$session = New-PSSession -ComputerName $ipaddr -Credential $credential
# Copy the file to the Nano Server instance
Copy-Item $zipfile c:\ -ToSession $session
# Enter the interactive remote session
Enter-PSSession $session
# Extract the ZIP file
Expand-Archive -Path C:\PowerShell-7.4.1-win-x64.zip -DestinationPath 'C:\Program Files\PowerShell 7'

WSMan を使用してリモート処理を行う場合、「別のインスタンスのテクニック」の、リモート エンドポイントを作成する手順に従います。

PowerShell リモート処理

PowerShell では、WSMan と SSH の両方について PowerShell Remoting Protocol (PSRP) がサポートされています。 詳細については、次を参照してください。

古いバージョンの Windows 上の WSMan 経由で PowerShell リモート処理を有効にするには、次の前提条件が満たされている必要があります。

  • Windows Management Framework (WMF) 5.1 をインストールします (必要な場合)。 WMF の詳細については、WMF の概要に関する記事を参照してください。
  • Windows 10 より前のバージョンの Windows にユニバーサル C ランタイムをインストールします。 これは、直接ダウンロードすることも、Windows Update 経由で入手することもできます。 完全にパッチが適用されたシステムには、既にこのパッケージがインストールされています。

サポートされている Windows のバージョン

次の表は、PowerShell のリリースと、それらがサポートされている Windows のバージョンの一覧です。 これらのバージョンは、PowerShell のバージョンがサポート終了になるか、Windows のバージョンがサポート終了になるまでサポートされます。

  • Supported アイコンは、OS または PowerShell のバージョンがまだサポートされていることを示します
  • Out of Support アイコンは、PowerShell のそのバージョンが OS のそのバージョンでサポートされなくなっていることを示します
  • In Test アイコンは、その OS での PowerShell のテストが完了していないことを示します
  • Not Supported アイコンは、OS または PowerShell のバージョンがサポートされていないことを示します
  • OS のバージョンと PowerShell のバージョンの両方が Supported アイコンである場合は、その組み合わせがサポートされます
Windows 7.2 (LTS-previous) 7.3 7.4 (LTS-current)
Supported Windows Server 2016、2019、または 2022 Supported Supported Supported
Supported Windows Server Nano (1809 以降) Supported Supported Supported
Supported Windows 11 Supported Supported Supported
Supported Windows 10 1607 以降 Supported Supported Supported

Note

Windows の特定のバージョンのサポートは、Microsoft サポート ライフサイクル ポリシーによって決まります。 詳細については、次を参照してください。

PowerShell は、次のプロセッサ アーキテクチャの Windows でサポートされています。

Windows 7.2 (LTS-current) 7.3 7.4 (LTS-current)
Windows Server 2016 以降 x64、x86 x64、x86 x64、x86
Windows Server Core 2016 以降 x64、x86 x64、x86 x64、x86
Nano Server バージョン 1803 以降 X64 X64 X64
Windows 11 クライアント x64、Arm64 x64、Arm64 x64、Arm64
Windows 10 クライアント x64、x86、Arm64 x64、x86、Arm64 x64、x86、Arm64

winver.exe を実行することで、使用しているバージョンを確認できます。

インストールのサポート

Microsoft は、このドキュメントでインストール方法をサポートしています。 他のソースには、サードパーティの別のインストール方法を利用できる可能性があります。 そのようなツールと方法は機能するかもしれませんが、Microsoft ではそれらの方法をサポートできません。