如何在PowerShell函数参数中包含逗号



我有以下PowerShell函数,在其中我验证参数是否是一个数字、一组用逗号分隔的数字或一系列数字。

function CheckUpkeep() {
Param(
[ValidatePattern("d+(,|-d+)*")]
[Parameter(Mandatory = $true, Position=0)]
$ID
)
Write-Output "ID: $ID" 
}

调用此命令的有效方法示例如下:

CheckUpkeep 1
CheckUpkeep 1-10
CheckUpKeep 1-3,5-10

1-10种情况的输出:
ID:1-10

1-3,5-10情况的输出:
ID:1-35-10

如何更新正则表达式,以便在调用函数(CheckUpkeep"1-3,5-10"(时也捕获逗号,而不必使用字符串引号(无论是单引号还是双引号(,这样对于1-3,5-10的情况,当我调用时:

CheckUpkeep 1-3,5-10

输出为:

ID:1-3,5-10

谢谢!

问题不在于如何包含逗号,而在于如何在处理后再次输出逗号。

由于您不想添加引号,我认为您也不想用反勾号(`(转义逗号。如果没有引号或转义,逗号将告诉PowerShell将您的输入视为数组。这是imo的正确行为,因为在那之后,您可以直接处理一组数字中的数字,而无需自己解析逗号分隔的字符串。

要再次输出逗号,请更改此行:

Write-Output "ID: $ID"

到此行:

Write-Output "ID: $($ID -join ',')"

对于不包含逗号的输入,这也将正确工作。

最新更新