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 のエディションの使用に関する詳細
- $PSVersionTable を使用して PowerShell の実行エディションを特定する
- PSEdition パラメーターを使用して CompatiblePSEditions で Get-Module の結果をフィルター処理する
- 互換性のある 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 では、PowerShell で出荷される Pester のバージョンが 3.3.5 から 3.4.0 に更新されました。 GitHub リポジトリの CHANGELOG を調べることで、バージョン 3.3.5 から 3.4.0 への変更を確認できます。
キーワード
Windows PowerShell 5.1 の新機能
PowerShell