Powershell 否定a-开关(除开关参数外的所有参数)
如何获取除开关指示的项目外的所有项目 我使用:Powershell 否定a-开关(除开关参数外的所有参数),powershell,cmdlets,Powershell,Cmdlets,如何获取除开关指示的项目外的所有项目 我使用: Get-Disk -UniqueId 4875E7EB064AA60 仅获取特定磁盘驱动器的信息 我想使用相同的命令,但获取除此之外的所有驱动器 类似这样的内容(在伪代码中): PowerShell作为一种语言不允许“反转”参数值。您需要在事实之后使用Where Object过滤返回的结果 Get-Disk | Where-Object { $_.UniqueId -ne '4875E7EB064AA60' } 有几个cmdlet确实允许表达“
Get-Disk -UniqueId 4875E7EB064AA60
仅获取特定磁盘驱动器的信息
我想使用相同的命令,但获取除此之外的所有驱动器
类似这样的内容(在伪代码中):
PowerShell作为一种语言不允许“反转”参数值。您需要在事实之后使用
Where Object
过滤返回的结果
Get-Disk | Where-Object { $_.UniqueId -ne '4875E7EB064AA60' }
有几个cmdlet确实允许表达“除此之外的一切”语义,但这取决于单个cmdlet是否以及如何实现。例如:
和Get-ChildItem
cmdlet具有允许排除特定结果的参数Select-Object
-Exclude
cmdlet有一个开关Select-String
,用于反转参数-NotMatch
选择的内容-Pattern
- 所有具有筛选器参数的cmdlet(如
、Get-WmiObject-filter
、或Get-ADUser-filter
)显然也允许表达“not this”语义Get-ADUser-LDAPFilter
获取磁盘|其中对象唯一ID-ne 4875E7EB064AA60
感谢Ansgar和Don。。。你的答案很好。。。但我的问题也在语言能力和灵活性方面。。。如果有一个(-not(??))参数也适用于其他几个命令/情况……不。该语言不提供“反转”参数值的通用方法。有些cmdlet的参数允许进行否定选择(如Get ChildItem-Exclude
,SelectString-NotMatch
,…),但仅此而已。值得指出的是,即使PowerShell确实将-not
开关作为公共参数(即语法)实现,单个cmdlet仍然需要做一些工作才能使其真正生效(即语义)。事实上,如果不从参数绑定中获取更多信息,那么将每个开关倒置可能没有意义,因此即使是语法也无法在语言级别实现。(设置位置-而不是路径C:\Users意味着什么?)
Get-Disk | Where-Object { $_.UniqueId -ne '4875E7EB064AA60' }