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
似乎Get-Member在第一次Get-Member
调用中是字符串转换为字符串,但对于像Get-Member
这样的Cmdlet来说,这似乎是非常奇怪的行为。
我已阅读How to use PowerShell Get-Member cmdlet,但我不相信这是同一个问题。
答案 0 :(得分:5)
XmlNamespaceManager实现IEnumerable
,因此PowerShell将在管道中输出XmlNamespaceManager中包含的项。为了防止您使用逗号运算符:
,$nsmgr | Get-Member
这将在XmlNamespaceManager周围创建一个简单的数组包装器,以便它沿管道而不是其内容传播。