PowerShell 5.0 の新しい言語機能

PowerShell 5.0 では、他のオブジェクト指向プログラミング言語のように、形式的構文とセマンティクスを使って、クラスや他のユーザー定義型を定義する機能が追加されました。 開発者や IT プロフェッショナルがより広範なユース ケースで PowerShell を採用できるようにし、PowerShell アーティファクト (DSC リソースなど) の開発を簡素化し、管理面の対応を促進することがその目標です。

PowerShell 5.0 では、PowerShell に次の新しい言語要素が導入されています。

class キーワード

class キーワードでは新しいクラスを定義します。 これは、真の .NET Framework 型です。 クラス メンバーはパブリックですが、モジュール スコープ内でのみパブリックです。 型名を文字列として参照することはできません (たとえば、New-Object は機能しません)。このリリースでは、クラスが定義されているスクリプトまたはモジュール ファイルの外で type リテラル ([MyClass] など) を使用することはできません。

class MyClass
{
    ...
}

enum キーワードおよび列挙

区切り文字として改行文字を使用する enum キーワードのサポートが追加されました。 現時点では、列挙子自体に関して列挙子を定義することはできません。 ただし、次の例に示すように、別の列挙型に関して列挙型を初期化することはできます。 また、基本データ型を指定することはできません。基本データ型は常に [int] です。

enum Color2
{
    Yellow = [Color]::Blue
}

列挙子の値は、解析時定数である必要があります。 呼び出されたコマンドの結果に、それを設定することはできません。

enum MyEnum
{
    Enum1
    Enum2
    Enum3 = 42
    Enum4 = [int]::MaxValue
}

次の例に示すように、enum では算術演算がサポートされます。

enum SomeEnum { Max = 42 }
enum OtherEnum { Max = [SomeEnum]::Max + 1 }

Import-DscResource

Import-DscResource は真の動的キーワードです。 PowerShell では、DscResource 属性を含むクラスを探して、指定されたモジュールのルート モジュールを解析します。

ImplementingAssembly

新しいフィールド ImplementingAssemblyModuleInfo に追加されました。 これは、スクリプトでクラスが定義されている場合はスクリプト モジュールに作成された動的アセンブリに設定されるか、またはバイナリ モジュールの読み込み済みアセンブリに設定されます。 ModuleTypeManifest の場合は設定されません。

ImplementingAssembly フィールドのリフレクションでは、モジュール内のリソースが検出されます。 これは、PowerShell または他の管理言語で記述されたリソースを検出できることを意味します。

関連項目