我对powershell很新。我已经完成了搜索并检查了stackoverflow和超级用户。即便是我的移动应用程序和价格合理的教科书也没有提及它。
是否有一种简单的方法可以应用我不理解的多个选项/过滤器。或者是否有一个我不知道的术语意味着选项/过滤器?
我一直在尝试使用:
get-command -commandtype cmdlet -and -verb add
get-command -commandtype cmdlet| -verb add
get-command -commandtype cmdlet|get-command -verb add
这些都没有带回正确的清单。最后带回来的东西,但它总是随机的,只有一些正确的结果。
我对任何回复感兴趣。非常感兴趣,如果你是一个伟大的PowerShell用户,可以简单而简洁地帮助。
提前致谢。
答案 0 :(得分:3)
Get-Command -Verb Add
会显示名称以Add-
开头的所有cmdlet 和函数。
如果您只想将输出限制为cmdlet,请使用带有(隐含)Add-*
参数的通配符模式-Name
:
Get-Command -CommandType cmdlet Add-*
效率较低,基于管道的等价物将是:
Get-Command -CommandType cmdlet | ? Verb -eq 'Add' # '?' is an alias for 'Where-Object'
虽然能够将-CommandType
与Cmdlet
的特定值与-Verb
参数组合起来是有意义的,但当前语法(截至PSv5.1)不允许,Get-Command -?
的输出(部分)证明:
Get-Command [[-Name] <String[]>] [[-ArgumentList] <Object[]>] [-All] [-CommandType {Alias | Function | Filter | Cmdlet | ExternalScript | Application |
Script | Workflow | Configuration | All}] [-FullyQualifiedModule <ModuleSpecification[]>] [-ListImported] [-Module <String[]>] [-ParameterName <String[]>]
[-ParameterType <PSTypeName[]>] [-ShowCommandInfo] [-Syntax] [-TotalCount <Int32>] [<CommonParameters>]
Get-Command [[-ArgumentList] <Object[]>] [-All] [-FullyQualifiedModule <ModuleSpecification[]>] [-ListImported] [-Module <String[]>] [-Noun <String[]>]
[-ParameterName <String[]>] [-ParameterType <PSTypeName[]>] [-ShowCommandInfo] [-Syntax] [-TotalCount <Int32>] [-Verb <String[]>] [<CommonParameters>]
上面的每个段落代表一个所谓的参数集,如您所见,-Verb
和-Name
位于不同的参数集中,这意味着您不能将它们用作同一命令行的一部分。
至于您尝试的内容:
get-command -commandtype cmdlet -and -verb add
-and
)来组合这些运算符
布尔运算符只能用于表达式,而不能用于命令。 get-command -commandtype cmdlet| -verb add
-verb
被解释为命令名称,这明显失败了。 get-command -commandtype cmdlet|get-command -verb add
get-command -commandtype cmdlet
检索所有cmdlet的一个,您不需要第二个get-command
实例来进一步过滤结果 - 而是通过属性get-command次调用输出的对象>,如上所示。