gpt4 book ai didi

powershell - 了解 Cmdlet 位置参数

转载 作者:行者123 更新时间:2023-12-03 13:59:42 25 4
gpt4 key购买 nike

所有,请原谅我,我是 Power Shell 的新手, 目前在看书Windows PowerShell CookBook尝试开始使用它。到目前为止,一切对我来说都是有意义的,除了一件事,我完全对 Positional Parameter 感到困惑。至Cmdlet .

例如:Select-String
语法如下:

Select-String [-Pattern] <String[]> [-Path] <String[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>]
[-Encoding <String>] [-Exclude <String[]>] [-Include <String[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch]
[<CommonParameters>]

Select-String [-Pattern] <String[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <String>]
[-Exclude <String[]>] [-Include <String[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] -InputObject <PSObject>
[<CommonParameters>]

Select-String [-Pattern] <String[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <String>]
[-Exclude <String[]>] [-Include <String[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] -LiteralPath <String[]>
[<CommonParameters>]

我可以将参数值传递给 Cmdlet直接忽略参数名称。如下所示:
"Hello World"|Select-String .

基于 Positional parameter的概念,因为参数 -Pattern是第一个参数。值 .可以匹配参数 -Pattern .我可以理解。

但是当我尝试这个命令行时 "hello world" | Select-String -AllMatches ..不在第一。为什么 Select-String能知道并计算出结果吗?有人可以告诉我更多以更好地理解它吗?谢谢。

最佳答案

这是第一个未命名 参数。位置值告诉 cmdlet 哪个参数属于哪个参数。

命令Select-String -allmatches .链接-allmatches切换到它的参数,并设置.作为 $args 中的第一项-array (arguments-array) 因为它没有 -parametername在它面前。

那么因为Select-String包括其参数的位置值,cmdlet 知道参数数组中的第一项 ( $args[0] ) 应该绑定(bind)到 -Pattern范围。

如果您想更好地理解这一点,请阅读关于 Parameter Position? 的部分。在帮助部分运行:

Get-Help about_Parameters

然后注意 -Pattern参数的位置为 1,如下所示:
Get-Help select-string -Parameter pattern

-Pattern <String[]>
Specifies the text to find. Type a string or regular expression. If you type a string, use the SimpleMatch parameter.

To learn about regular expressions, see about_Regular_Expressions.

Required? true
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false

然后运行以下行,看看 PowerShell 如何绑定(bind)输入对象 "hello world"以及参数和参数。
Trace-Command -Expression { "Hello World" | Select-String -allmatches . } -Name ParameterBinding -PSHost

关于powershell - 了解 Cmdlet 位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com