gpt4 book ai didi

validation - Powershell自动完成ValidationSet

转载 作者:行者123 更新时间:2023-12-02 23:41:28 28 4
gpt4 key购买 nike

创建验证集很容易。

param(
[Parameter(Mandatory=$true)]
[ValidateSet('Ding','Dong')]
[string]$bellState,

[Parameter(Mandatory=$true)]
[ValidateSet('Dead','Alive')]
[string]$witchesState

)

如果您的Powershell版本> 2,它将提供免费的自动完成功能
enter image description here

但是,如果您一开始没有传递参数,那么它就没有太大帮助。
cmdlet Untitled2.ps1 at command pipeline position 1
Supply values for the following parameters:
bellState: Dib
witchesState: Alive
C:\Users\cac\Untitled2.ps1 : Cannot validate argument on parameter 'bellState'. The argument "Dib" does not belong to the set "Ding,Dong" specified by the ValidateSet attribute. Supply an argument that is in the set and then
try the command again.
+ CategoryInfo : InvalidData: (:) [Untitled2.ps1], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Untitled2.ps1

这次没有制表符补全或线索:(

如果您输入的内容无效,则会得到一个有用的错误:
"The argument "Dib" does not belong to the set "Ding,Dong""

但是,此错误不是在原始错误时而是在参数末尾抛出,并且没有选择可以重试。

有没有人发现一种扩展此验证的方法,使其在启动时无需传递参数的情况下变得更加用户友好。

最佳答案

虽然这可能并不是您想要的,但我认为对脚本的一个简单添加就是将HelpMessages添加到您的参数中。这样,用户可以选择获取有关他们将要键入的内容的更多信息。

param(
[Parameter(Mandatory=$true,
HelpMessage="You need to pick ding or dong silly")]
[ValidateSet('Ding','Dong')]
[string]$bellState,

[Parameter(Mandatory=$true)]
[ValidateSet('Dead','Alive')]
[string]$witchesState

)

所以在不指定参数的情况下调用...

Supply values for the following parameters:
(Type !? for Help.)
bellState: !?
You need to pick ding or dong silly
bellState:

关于validation - Powershell自动完成ValidationSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242466/

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