WMF 5.1 の新しいシナリオと機能New Scenarios and Features in WMF 5.1

注意: この情報は暫定版であり、変更することがあります。Note: This information is preliminary and subject to change.

PowerShell のエディションPowerShell Editions

PowerShell は、バージョン 5.1 以降、機能セットとプラットフォーム互換性が異なるさまざまなエディションが提供されるようになりました。Starting with version 5.1, PowerShell is available in different editions which denote varying feature sets and platform compatibility.

  • デスクトップ エディション: .NET Framework 上に構築されており、Server Core や Windows Desktop などの Windows の完全エディションで実行する PowerShell のバージョンを対象とするスクリプトおよびモジュールとの互換性を提供します。Desktop Edition: Built on .NET Framework and provides compatibility with scripts and modules targeting versions of PowerShell running on full footprint editions of Windows such as Server Core and Windows Desktop.
  • コア エディション: .NET Core 上に構築されており、Nano Server や Windows IoT などの Windows の縮小エディションで実行する PowerShell のバージョンを対象とするスクリプトおよびモジュールとの互換性を提供します。Core Edition: Built on .NET Core and provides compatibility with scripts and modules targeting versions of PowerShell running on reduced footprint editions of Windows such as Nano Server and Windows IoT.

PowerShell のエディションの使用に関する詳細Learn more about using PowerShell Editions

カタログ コマンドレットCatalog Cmdlets

Microsoft.PowerShell.Security モジュールに新しいコマンドレットが 2 つ追加されました。Windows カタログ ファイルを生成し、検証するコマンドレットです。Two new cmdlets have been added in the Microsoft.PowerShell.Security module; these generate and validate Windows catalog files.


New-FileCatalog は、一連のフォルダーやファイルに対して Windows カタログ ファイルを作成します。New-FileCatalog creates a Windows catalog file for set of folders and files. このカタログ ファイルには、指定されたパスのすべてのファイルのハッシュが含まれています。This catalog file contains hashes for all files in specified paths. ユーザーは一連のフォルダーと共に、それらのフォルダーを表すカタログ ファイルを配信できます。Users can distribute the set of folders along with corresponding catalog file representing those folders. カタログ作成時刻以降、フォルダーに変更が加えられたかどうかを検証するとき、この情報が役立ちます。This information is useful to validate whether any changes have been made to the folders since catalog creation time.

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

カタログ バージョン 1 と 2 がサポートされています。Catalog versions 1 and 2 are supported. バージョン 1 は SHA1 ハッシュ アルゴリズムを使用して、バージョン 2 は SHA256 ハッシュ アルゴリズムを使用してファイル ハッシュを作成します。Version 1 uses the SHA1 hashing algorithm to create file hashes; version 2 uses SHA256. Windows Server 2008 R2Windows 7 はカタログ バージョン 2 に対応していません。Catalog version 2 is not supported on Windows Server 2008 R2 or Windows 7. カタログ バージョン 2 は Windows 8Windows Server 2012 以降のオペレーティング システムで利用する必要があります。You should use catalog version 2 on Windows 8, Windows Server 2012, and later operating systems.

これはカタログ ファイルを作成します。This creates the catalog file.

カタログ ファイルの整合性を検証するために (上記の例では Pester.cat)、Set-AuthenticodeSignature コマンドレットで署名します。To verify the integrity of catalog file (Pester.cat in above example), sign it using Set-AuthenticodeSignature cmdlet.


Test-FileCatalog は、一連のフォルダーを表すカタログを検証します。Test-FileCatalog validates the catalog representing a set of folders.

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

このコマンドレットは、カタログで見つかったすべてのファイル ハッシュとその相対パスをディスクのそれらと比較します。This cmdlet compares all the files hashes and their relative paths found in catalog with ones on disk. ファイル ハッシュとパスの間に不一致が検出された場合、ValidationFailed というステータスを返します。If it detects any mismatch between file hashes and paths it returns the status as ValidationFailed. -Detailed パラメーターを利用し、この情報をすべて取得できます。Users can retrieve all this information by using the -Detailed parameter. 署名プロパティには、カタログの署名ステータスも表示されます。これは、カタログ ファイルで Get-AuthenticodeSignature コマンドレットを呼び出すことと同じです。It also displays signing status of catalog in Signature property which is equivalent to calling Get-AuthenticodeSignature cmdlet on the catalog file. -FilesToSkip パラメーターを利用し、検証中にファイルをスキップすることもできます。Users can also skip any file during validation by using the -FilesToSkip parameter.

モジュール分析キャッシュModule Analysis Cache

WMF 5.1 以降の PowerShell では、エクスポートするコマンドなど、モジュールに関するデータのキャッシュに使用されるファイルを制御できます。Starting with WMF 5.1, PowerShell provides control over the file that is used to cache data about a module, such as the commands it exports.

既定では、このキャッシュは ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache ファイルに格納されます。By default, this cache is stored in the file ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache. キャッシュは、通常、起動時にコマンドを検索するときに読み取られ、モジュールのインポート後しばらくしてバックグラウンド スレッドで書き込まれます。The cache is typically read at startup while searching for a command and is written on a background thread sometime after a module is imported.

キャッシュの既定の場所を変更するには、PowerShell を開始する前に、環境変数 $env:PSModuleAnalysisCachePath を設定します。To change the default location of the cache, set the $env:PSModuleAnalysisCachePath environment variable before starting PowerShell. この環境変数の変更は、子プロセスのみに影響します。Changes to this environment variable will only affect children processes. 値には、PowerShell がファイルの作成および書き込みアクセス許可を持つ完全なパス (ファイル名を含む) を指定する必要があります。The value should name a full path (including filename) that PowerShell has permission to create and write files. ファイル キャッシュを無効にするには、たとえば次のような無効な場所をこの値に設定します。To disable the file cache, set this value to an invalid location, for example:

$env:PSModuleAnalysisCachePath = 'nul'

これは、パスを無効なデバイスに設定します。This sets the path to an invalid device. PowerShell がパスに書き込めない場合、エラーは返されませんが、トレーサーでエラー レポートを見ることができます。If PowerShell can't write to the path, no error is returned, but you can see error reporting by using a tracer:

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

キャッシュの書き込み時、PowerShell は存在しなくなったモジュールを確認することで、キャッシュが不必要に大きくなるのを防ぎます。When writing out the cache, PowerShell will check for modules that no longer exist to avoid an unnecessarily large cache. このような確認が望ましくないことがあり、その場合は無効に設定できます。Sometimes these checks are not desirable, in which case you can turn them off by setting:

$env:PSDisableModuleAnalysisCacheCleanup = 1

この環境変数の設定は、現在のプロセスで直ちに有効になります。Setting this environment variable will take effect immediately in the current process.

モジュールのバージョンの指定Specifying module version

WMF 5.1 では、using module は PowerShell の他のモジュール関連構造と同様に動作します。In WMF 5.1, using module behaves the same way as other module-related constructions in PowerShell. 以前は、モジュールの特定のバージョンを指定する方法はありませんでした。複数のバージョンが存在する場合、エラーが発生しました。Previously, you had no way to specify a particular module version; if there were multiple versions present, this resulted in an error.

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

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

  • モジュールに複数のバージョンがある場合、PowerShell は同じ解決ロジックImport-Module として使用し、エラーを返しません。Import-Module および Import-DscResource と同じ動作です。If there are multiple versions of the module, PowerShell uses the same resolution logic as Import-Module and doesn't return an error--the same behavior as Import-Module and Import-DscResource.

Pester の機能強化Improvements to Pester

WMF 5.1 では、PowerShell で出荷される Pester のバージョンが 3.3.5 から 3.4.0 に更新され、コミット https://github.com/pester/Pester/pull/484/commits/3854ae8a1f215b39697ac6c2607baf42257b102e が追加されました。Nano Server での Pester の動作を改善します。In WMF 5.1, the version of Pester that ships with PowerShell has been updated from 3.3.5 to 3.4.0, with the addition of commit https://github.com/pester/Pester/pull/484/commits/3854ae8a1f215b39697ac6c2607baf42257b102e, which enables better behavior for Pester on Nano Server.

バージョン 3.3.5 から 3.4.0 の変更点については、https://github.com/pester/Pester/blob/master/CHANGELOG.md の ChangeLog.md ファイルを参照してください。You can review the changes in versions 3.3.5 to 3.4.0 by inspecting the ChangeLog.md file at: https://github.com/pester/Pester/blob/master/CHANGELOG.md