我正试图进入PowerShell并遇到了我的第一个障碍.
我跑的时候
Get-Command | Where-Object CommandType -contains Cmdlet
Run Code Online (Sandbox Code Playgroud)
我的输出被过滤,因此只显示包含"Cmdlet"的"CommandType"属性值的命令,如下所示:
对象"Source"可以完成同样的事情:
Get-Command | Where-Object Source -contains appx
Run Code Online (Sandbox Code Playgroud)
哪个让我:
但是当我尝试运行时:
Get-Command | Where-Object Name -contains Add
Run Code Online (Sandbox Code Playgroud)
我一无所获.为什么我可以通过对象"CommandType"和"Source but not"Name来过滤输出?我肯定在这里遗漏了一些东西......
编辑:我知道我可以运行:
Get-Command -verb "get"
Run Code Online (Sandbox Code Playgroud)
并获得所需的输出.但我想弄清楚为什么我的"where-object"声明不起作用.
编辑2:
如果我使用"-match"比较运算符,它很有用......
get-command | where-object Name -match "add"
Run Code Online (Sandbox Code Playgroud)
但是不是"名称"属性只是字符串?-match应该用于正则表达式比较afaik?我现在很困惑......
Kir*_*ran 17
使用like或match运算符:
Get-Command | Where-Object Name -like Add*
Run Code Online (Sandbox Code Playgroud)
这将匹配单词中的任何位置
Get-Command | Where-Object Name -match Add
Run Code Online (Sandbox Code Playgroud)
但更好的方法是:
Get-Command -verb Add
Run Code Online (Sandbox Code Playgroud)
阅读更多关于包含运营商在这里
-Contains描述:遏制操作员.判断参考值集合是否包含单个测试值.始终返回布尔值.仅当测试值与至少一个参考值完全匹配时,才返回TRUE.
PS C:\> "abc", "def" -Contains "def"
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35017 次 |
| 最近记录: |