Get-Member在使用管道时显示不正确的属性

Nic*_*vey 2 powershell

wwwroot> $nsmgr.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    XmlNamespaceManager                      System.Object

wwwroot> Get-Member -InputObject $nsmgr

   TypeName: System.Xml.XmlNamespaceManager

wwwroot> $nsmgr | Get-Member

   TypeName: System.String
Run Code Online (Sandbox Code Playgroud)

似乎Get-Member在第一次Get-Member调用时是类型转换为String ,但对于像Cmdlet这似乎是非常奇怪的行为Get-Member.

我已经阅读了如何使用PowerShell Get-Member cmdlet,但我不相信这是同一个问题.

Kei*_*ill 5

XmlNamespaceManager实现,IEnumerable因此PowerShell将在管道下输出XmlNamespaceManager中包含的项.为了防止您可以使用逗号运算符:

,$nsmgr | Get-Member
Run Code Online (Sandbox Code Playgroud)

这将在XmlNamespaceManager周围创建一个简单的数组包装器,以便它沿管道而不是其内容传播.