[string[]] 参数与读取主机行为
[string[]] Parameter vs Read-Host behaviour
在我的 PowerShell 脚本中,我为 :
设置了参数
[string[]]$OptionNum
所以我可以调用我的脚本,例如:
.\MyScript.ps1 1,4,6
然后我在 $OptionNum 上有一个 switch 语句,每个选项值 PSItem –contains “n”
,到 运行 相关代码,具体取决于已选择的内容。因此,上面分别调用了 1、4 和 6 的各个开关选项。效果不错。
问题。如果用户没有在提示时指定这些选项,我想向他们展示可用选项列表,并允许他们输入他们想要的项目。所以我输出了有关可用内容的信息,然后我有一行:
[string[]]$OptionNum = Read-Host “Enter the required options”
虽然在这两种情况下$OptionNum都设置为字符串System.Array类型,使用数组上面的参数方法有三个不同的值,但是Read-Host方法使用相同的方法输入相同的值给出我的单个数组值“1,4,6”。或者换个说法,$OptionNum.count
使用参数时为3,使用Read-Host时为1。
如何调整我的读取主机代码,以便将这些逗号分隔值保存为数组中的单独条目?
请注意,$OptionNum 值是字符串值而不是数字,可以是单词而不是数字。我希望无论使用哪种方法输入选项,用户体验都相同,因此代码可以更改,但用户输入的内容不能。
我猜你就是这样做的:
$OptionNum = (Read-Host “Enter the required options”) -split ','|%{if($_){$_.trim()}}
Read-Host
的结果字符串在逗号中被分割,然后您遍历该数组询问是否有值(如果由于某种原因您的用户在末尾留下逗号或他们的输入以逗号)你 trim 开头和结尾的尾随空格(因为如果用户输入是 '1, 2, 3, 4,6 , 7'
或用户喜欢做的事情)
在我的 PowerShell 脚本中,我为 :
设置了参数[string[]]$OptionNum
所以我可以调用我的脚本,例如:
.\MyScript.ps1 1,4,6
然后我在 $OptionNum 上有一个 switch 语句,每个选项值 PSItem –contains “n”
,到 运行 相关代码,具体取决于已选择的内容。因此,上面分别调用了 1、4 和 6 的各个开关选项。效果不错。
问题。如果用户没有在提示时指定这些选项,我想向他们展示可用选项列表,并允许他们输入他们想要的项目。所以我输出了有关可用内容的信息,然后我有一行:
[string[]]$OptionNum = Read-Host “Enter the required options”
虽然在这两种情况下$OptionNum都设置为字符串System.Array类型,使用数组上面的参数方法有三个不同的值,但是Read-Host方法使用相同的方法输入相同的值给出我的单个数组值“1,4,6”。或者换个说法,$OptionNum.count
使用参数时为3,使用Read-Host时为1。
如何调整我的读取主机代码,以便将这些逗号分隔值保存为数组中的单独条目?
请注意,$OptionNum 值是字符串值而不是数字,可以是单词而不是数字。我希望无论使用哪种方法输入选项,用户体验都相同,因此代码可以更改,但用户输入的内容不能。
我猜你就是这样做的:
$OptionNum = (Read-Host “Enter the required options”) -split ','|%{if($_){$_.trim()}}
Read-Host
的结果字符串在逗号中被分割,然后您遍历该数组询问是否有值(如果由于某种原因您的用户在末尾留下逗号或他们的输入以逗号)你 trim 开头和结尾的尾随空格(因为如果用户输入是 '1, 2, 3, 4,6 , 7'
或用户喜欢做的事情)