我正试图进入PowerShell并遇到了我的第一个障碍。
当我跑
时Get-Command | Where-Object CommandType -contains Cmdlet
我的输出被过滤,因此只显示包含“Cmdlet”的“CommandType”属性值的命令,如下所示:
对象“Source”可以做同样的事情:
Get-Command | Where-Object Source -contains appx
哪个让我:
但是当我尝试跑步时:
Get-Command | Where-Object Name -contains Add
我一无所获。 为什么我可以通过对象“CommandType”和“Source but not”Name来过滤输出?我肯定在这里遗漏了一些东西......
编辑:我知道我可以跑:
Get-Command -verb "get"
获得所需的输出。但我想弄清楚为什么我的“where-object”声明不起作用。
编辑2:
如果我使用“-match”比较运算符,它会起作用......
get-command | where-object Name -match "add"
但是“name”属性只是字符串吗? -match应该用于正则表达式比较afaik?我现在很困惑......
答案 0 :(得分:14)
使用like
或match
运算符:
Get-Command | Where-Object Name -like Add*
这将匹配单词
中的任何位置Get-Command | Where-Object Name -match Add
但更好的方法是:
Get-Command -verb Add
详细了解包含运算符here
- 包含 描述:遏制操作员。告知是否收集参考 值包括单个测试值。始终返回布尔值。返回TRUE 仅当测试值与至少一个参考值完全匹配时。
PS C:\> "abc", "def" -Contains "def"
True