次の2行のコードを使用します。
$meta = New-Object System.Management.Automation.CommandMetadata (Get-Command Get-Event)
$parametersInCmdlet = $meta.Parameters.GetEnumerator()
$ parametersInCmdlet変数は、それを参照することでわかるように設定されます。
$parametersInCmdlet
Key Value
--- -----
SourceIdentifier System.Management.Automation.ParameterMetadata
EventIdentifier System.Management.Automation.ParameterMetadata
その直後にもう一度参照すると、空のように見えます(Get-Memberにパイプされているかどうかが確認されています)。
$parametersInCmdlet | gm
gm : No object has been specified to the get-member cmdlet.
At line:1 char:23
+ $parametersInCmdlet | gm
+ ~~
+ CategoryInfo : CloseError: (:) [Get-Member], InvalidOperationException
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand
それらの参照の間にその変数に触れることは他にありません。これは、PS 2.0と3.0の両方のコンソールとISEで発生するため、バグよりもユーザーの誤解が多いと思います。
この場合、値が失われる原因は何ですか?