PowerShell - 管道可枚举的对象

时间:2014-07-31 22:03:12

标签: powershell

具体来说,我的例子是MSMQ队列。请考虑以下事项:

Add-Type System.Messaging
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.') | gm

实际管道输出的是队列中的消息,而不是MessageQueue对象本身,正如人们所期望的那样。我认为这是因为MessageQueue是可枚举的。

如何强制PowerShell管道MessageQueue个对象本身并阻止它枚举它们?

2 个答案:

答案 0 :(得分:2)

您应该能够通过在逗号前加上强制PowerShell来保持数组的完整性:

,[System.Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.') | gm

答案 1 :(得分:2)

另一种选择是在Get-Member上使用-InputObject参数,因为它不会展开对象,例如:

Get-Member -InputObject ([Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.'))

是的,这实际上是完全避开了管道,但这是一个很好的技术,可以包含在你的PowerShell技巧中。