【问题标题】:PowerShell ValidateLength with Read-Host带有读取主机的 PowerShell ValidateLength
【发布时间】:2014-07-02 17:16:11
【问题描述】:

我正在尝试将 ValidateLength 声明与 Read-Host 一起使用,但是我无法让它工作。如果我在没有 Read-Host 的情况下使用它,它将完美无缺。以下是一些基本示例:

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

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

是否可以将 ValidateLength 声明与 Read-Host 一起使用?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    将您的 Read-Host 声明为字符串(因为 ValidateLength 不能接​​受除字符串之外的任何内容),问题就解决了。

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

    我不知道你为什么要在上面强制转换类型,但它解决了问题。

    【讨论】:

    • @CB。 8 有效。验证的不是数字,而是字符串的长度。所以 999 是有效的,因为它有 3 个字符长,但 6234 不是因为它有 4 个字符长。这不是数字特定的,ABC 是有效的,而 ABCD 不是。
    • 您也可以将类型放在开头:[string][ValidateLength(1,3)]$test1 = (Read-Host "Input")。仍然很奇怪,它不允许除字符串之外的任何其他类型。
    • @TheMadTechnician :) 是的 :)
    • @TheMadTechnician 谢谢,这正是我所需要的。很奇怪,您必须转换类型,但感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多