Powershell cmdlet否定-switch(除了switch参数之外的所有内容)

时间:2018-05-17 23:22:13

标签: powershell cmdlets

如何获得除开关指示的项目以外的所有项目?

我用:

Get-Disk -UniqueId 4875E7EB064AA60

仅获取特定磁盘驱动器的信息。

我想使用相同的命令,但获取除此之外的所有驱动器。

像这样(伪代码):

Get-Disk -not( -UniqueId 4875E7EB064AA60 )

1 个答案:

答案 0 :(得分:3)

PowerShell作为一种语言不允许“反转”参数值。您需要在事后用Where-Object过滤返回的结果。

Get-Disk | Where-Object { $_.UniqueId -ne '4875E7EB064AA60' }

有几个cmdlet确实允许表达“除此之外的所有内容”语义,但它取决于单个cmdlet是否以及如何实现它。例如:

  • Get-ChildItemSelect-Object cmdlet的参数-Exclude可以排除特定结果。
  • Select-String cmdlet有一个开关-NotMatch,用于反转参数-Pattern选择的内容。
  • 包含允许表达not条件的过滤器参数的所有cmdlet(如Get-WmiObject -FilterGet-ADUser -FilterGet-ADUser -LDAPFilter)显然也允许表达“not this”语义。