次の方法で共有


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 PowerShell 5.1 の変更については、Windows PowerShell の新機能で確認することもできます。

PowerShell のエディション

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

  • Desktop Edition: .NET Framework 上に構築され、Server Core や Windows Desktop などの Windows のフル フットプリント エディションで実行されている 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>]

このコマンドレットは、catalog で見つかったすべてのファイル ハッシュとその相対パスをdisk上のファイルと比較します。 ファイル ハッシュとパスの不一致が検出されると、状態が 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 は same 解決ロジックをImport-Moduleとして使用し、エラーを返しません。

Pester の機能強化

WMF 5.1 には Pester v3.4.0 が付属しています。 このバージョンの詳細については、GitHub リポジトリの CHANGELOG を参照してください。