使用以下 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 中,因此我认为这更多的是用户误解而不是错误。
在这种情况下,什么会导致价值丢失?