PowerShell使用读取主机验证长度

PowerShell使用读取主机验证长度,powershell,Powershell,我正在尝试对读取主机使用ValidateLength声明,但无法使其工作。如果我没有读主机就使用它,它会工作得完美无缺。以下是一些基本示例: [ValidateLength(1,3)]$test='123' [ValidateLength(1,3)]$test1=读取主机 123 无法添加属性,因为它将导致变量test1具有值 123无效。 第1行字符:1 +[ValidateLength(1,3)]$test1=读取主机 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我正在尝试对读取主机使用ValidateLength声明,但无法使其工作。如果我没有读主机就使用它,它会工作得完美无缺。以下是一些基本示例:

[ValidateLength(1,3)]$test='123'

[ValidateLength(1,3)]$test1=读取主机 123 无法添加属性,因为它将导致变量test1具有值 123无效。 第1行字符:1 +[ValidateLength(1,3)]$test1=读取主机 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:MetadataError:(:)[],ValidationMetadataException 在…上 +FullyQualifiedErrorId:ValidateSetFailure


是否可以对读取主机使用ValidateLength声明?

将读取主机声明为字符串(因为ValidateLength不能接受除字符串以外的任何内容),问题就解决了

[ValidateLength(1,3)]$test1 = [String](Read-Host "Input")

我不知道你为什么要对它强制类型,但它解决了问题。

@CB。8是有效的。验证的不是数字,而是字符串的长度。999是有效的,因为它有3个字符长,但6234不是,因为它有4个字符长。这不是特定于数字的,ABC有效,而ABCD无效。您也可以将类型放在开头:
[string][ValidateLength(1,3)]$test1=(读取主机“输入”)
。仍然很奇怪,它不允许除了字符串以外的任何其他类型。@TheMadTechnician:)是:)@TheMadTechnician谢谢这正是我需要的。很奇怪,你必须投的类型,但谢谢你的帮助。