次のコードは、PowerShell 4.0 以前で正常に機能します。最新の Windows 10 ビルドのバージョン 5.0.10240.16384 で実行すると、新しいオブジェクト ($a) にフィールドが入力されません。これはバグですか、それとも何か変更されましたか?
Add-Type @"
public struct TestUser {
public string First;
public string Last;
}
"@;
$a = New-Object TestUser -Property @{ First = "Joe"
Last = "Smith"};
バージョン 4.0 以前の結果:
$a.First -eq "Joe"
$a.Last -eq "Smith"
バージョン 5.0
$a.First -eq $null
$a.Last -eq $null
バージョン 5 の Get-Member
TypeName: TestUser
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
First Property string First {get;set;}
Last Property string Last {get;set;}
編集: これは、多くの既存のスクリプトに影響を与える重大な変更 (変更の場合) であることに基づいて、これに関するバグを Microsoft に提出しました。そのバグレポートに更新がある場合は、この質問を更新します。これが望ましい/変更された動作であることを示唆する可能性のある v5 の何かに誰かが遭遇した場合、私はまだフィードバックを探しています。興味があり、Win 10 マシンにアクセスできない場合は、v5 で他のテストも試してみてください。