Get-Элемент, Показывающий Неправильные Свойства При Использовании Каналов


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.

Я читал , Как использовать командлет PowerShell Get-Member, но я не думаю, что это та же проблема.

1   2   2012-12-11 00:31:42

1 ответ:

Xmlnamespacemanager реализует IEnumerable, поэтому PowerShell будет выводить элементы, содержащиеся в XmlNamespaceManager, вниз по конвейеру. Для предотвращения этого можно использовать оператор запятой:

,$nsmgr | Get-Member

Это создаст простую оболочку массива вокруг XmlNamespaceManager, так что он будет распространяться вниз по каналу вместо его содержимого.