具体来说,我的例子是MSMQ队列。请考虑以下事项:
Add-Type System.Messaging
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.') | gm
实际管道输出的是队列中的消息,而不是MessageQueue
对象本身,正如人们所期望的那样。我认为这是因为MessageQueue
是可枚举的。
如何强制PowerShell管道MessageQueue
个对象本身并阻止它枚举它们?
答案 0 :(得分:2)
您应该能够通过在逗号前加上强制PowerShell来保持数组的完整性:
,[System.Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.') | gm
答案 1 :(得分:2)
另一种选择是在Get-Member上使用-InputObject
参数,因为它不会展开对象,例如:
Get-Member -InputObject ([Messaging.MessageQueue]::GetPrivateQueuesByMachineName('.'))
是的,这实际上是完全避开了管道,但这是一个很好的技术,可以包含在你的PowerShell技巧中。