about_Windows_Powershell_5.1

簡単な説明

Windows PowerShell 5.1 に含まれる新機能について説明します。

詳細な説明

Windows PowerShell 5.1 には、その使用を拡張し、使いやすさを向上させ、Windows ベースの環境をより簡単かつ包括的に制御および管理できる重要な新機能が含まれています。

Windows PowerShell 5.1 は下位互換性があります。 Windows PowerShell 4.0、Windows PowerShell 3.0、および Windows PowerShell 2.0 用に設計されたコマンドレット、プロバイダー、モジュール、スナップイン、スクリプト、関数、プロファイルは、通常、Windows PowerShell 5.1 で変更なしで動作します。

  • 新しいコマンドレット: ローカル ユーザーとグループ、Get-ComputerInfo
  • PowerShellGet では、署名付きモジュールの適用や JEA モジュールのインストールなどの機能強化が行われています。
  • PackageManagement では、コンテナー、CBS セットアップ、EXE ベースのセットアップ、CAB パッケージをサポートするようになりました。
  • DSC および PowerShell クラスにおけるデバッグ機能の強化
  • セキュリティの機能強化としては、プル サーバーからもたらされるカタログ署名付きモジュールの適用、PowerShellGet コマンドレットを使用するタイミングなどが挙げられます。
  • さまざまなユーザー要求と問題への対応

Windows PowerShell 5.1 は、Windows Server バージョン 2016 以降と Windows クライアント バージョン 10 以降に既定でインストールされます。

以前のバージョンの Windows に Windows PowerShell 5.1 をインストールするには、「WMF 5.1 のインストールと構成」を参照してください。 Windows Management Framework 5.1 をインストールする前に、ダウンロードの詳細を読み、すべてのシステム要件を満たしていることを確認してください。

Windows PowerShell 5.1 の変更点については、Windows PowerShell の新機能に関する記事を参照してください。

PowerShell のエディション

PowerShell は、バージョン 5.1 以降、機能セットとプラットフォーム互換性が異なるさまざまなエディションが提供されるようになりました。

  • Desktop Edition: .NET Framework 上に構築され、Windows の完全フットプリント エディション (Server Core、Windows Desktop など) で実行される PowerShell のバージョンをターゲットとするスクリプトおよびモジュールと互換性があります。
  • Core Edition:.NET Core 上に構築されており、Nano Server や Windows IoT などの Windows の縮小エディションで実行する PowerShell のバージョンを対象とするスクリプトおよびモジュールとの互換性を提供します。

PowerShell のエディションの使用に関する詳細

カタログ コマンドレット

Microsoft.PowerShell.Security モジュールに 2 つの新しいコマンドレットが追加されました。 これらのコマンドレットは、Windows カタログ ファイルを生成して検証します。

New-FileCatalog

New-FileCatalog は、一連のフォルダーとファイルの Windows カタログ ファイルを作成します。 このカタログ ファイルには、指定されたパスのすべてのファイルのハッシュが含まれています。 ユーザーは一連のフォルダーと共に、それらのフォルダーを表すカタログ ファイルを配信できます。 カタログ作成時刻以降、フォルダーに変更が加えられたかどうかを検証するとき、この情報が役立ちます。

New-FileCatalog [-CatalogFilePath] <string> [[-Path] <string[]>]
 [-CatalogVersion <int>] [-WhatIf] [-Confirm] [<CommonParameters>]

カタログ バージョン 1 と 2 がサポートされています。 バージョン 1 は SHA1 ハッシュ アルゴリズムを使用して、バージョン 2 は SHA256 ハッシュ アルゴリズムを使用してファイル ハッシュを作成します。 カタログ バージョン 2 を使用する必要があります。

カタログ ファイルの整合性を検証するために (上記の例では Pester.cat)、Set-AuthenticodeSignature コマンドレットで署名します。

Test-FileCatalog

Test-FileCatalog は、一連のフォルダーを表すカタログを検証します。

Test-FileCatalog [-Detailed] [-FilesToSkip <String[]>]
 [-CatalogFilePath] <String> [[-Path] <String[]>]
 [-WhatIf] [-Confirm] [<CommonParameters>]

このコマンドレットは、カタログ内のすべてのファイル ハッシュとその相対パスをディスク上のファイルと比較します ファイル ハッシュとパスの不一致が検出されると、状態が次のように ValidationFailed返されます。 ユーザーは、Detailed パラメーターを使用して、この情報をすべて取得できます。 また、Signature プロパティにカタログの署名状態も表示されます。これは、カタログ ファイルで Get-AuthenticodeSignature コマンドレットを呼び出すことと同じです。 FilesToSkip パラメーターを使用して、検証中にファイルをスキップすることもできます。

モジュール分析キャッシュ

WMF 5.1 以降、PowerShell では、モジュールに関するデータ (エクスポートするコマンドなど) をキャッシュするために使用されるファイルを制御できます。

既定では、このキャッシュは ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache ファイルに格納されます。 キャッシュは、通常、起動時にコマンドを検索するときに読み取られ、モジュールのインポート後しばらくしてバックグラウンド スレッドで書き込まれます。

キャッシュの既定の場所を変更するには、PowerShell を開始する前に、環境変数 $env:PSModuleAnalysisCachePath を設定します。 この環境変数の変更は、子プロセスにのみ影響します。 値には、PowerShell がファイルの作成および書き込みアクセス許可を持つ完全なパス (ファイル名を含む) を指定する必要があります。 ファイル キャッシュを無効にするには、たとえば次のような無効な場所をこの値に設定します。

$env:PSModuleAnalysisCachePath = 'nul'

これは、パスを無効なデバイスに設定します。 PowerShell でパスに書き込めなかった場合、エラーは返されませんが、トレーサーを使用してエラー報告を確認できます。

Trace-Command -PSHost -Name Modules -Expression {
  Import-Module Microsoft.PowerShell.Management -Force
}

キャッシュを書き出すとき、PowerShell は、不要な大きなキャッシュを回避するために存在しなくなったモジュールに対してチェックします。 次の設定を使用して、チェックを無効にすることができます。

$env:PSDisableModuleAnalysisCacheCleanup = 1

この環境変数の設定は、現在のプロセスですぐに有効になります。

モジュールのバージョンの指定

WMF 5.1 では、using module は PowerShell の他のモジュール関連構造と同様に動作します。 以前は、特定のモジュール バージョンを指定する方法はありませんでした。 複数のバージョンが存在する場合は、エラーが発生しました。

WMF 5.1 では次のようになります。

  • ModuleSpecification コンストラクター (Hashtable) を使用できます。 このハッシュ テーブルの形式は Get-Module -FullyQualifiedName と同じです。

    例:using module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}

  • モジュールのバージョンが複数ある場合、PowerShell は同じ解決ロジックImport-Module使用し、エラーを返しません。

Pester の機能強化

WMF 5.1 では、PowerShell で出荷される Pester のバージョンが 3.3.5 から 3.4.0 に更新されました。 GitHub リポジトリの CHANGELOG を調べることで、バージョン 3.3.5 から 3.4.0 への変更を確認できます。

キーワード

Windows PowerShell 5.1 の新機能