【问题标题】:powershell how to set a character limit of no more than 15 characters, if more then prompt to re-enter the namepowershell如何设置不超过15个字符的字符限制,如果超过则提示重新输入名称
【发布时间】:2021-12-27 12:46:35
【问题描述】:

如何为以下代码设置字符限制? 我需要一个 IF 语句来检查长度吗?

do { $VM = Read-Host "Enter Server Name" } 
until ($VM)

我试过了

do { [string][validatelength(0,15)] $VM = Read-Host "Enter Server Name" } 
until ($VM)

如果输入文本不超过 15 个,那就太好了……如果它超出了它就会出错 我需要它循环回来,所以它要求正确的名称

我该如何调整这个?

谢谢

【问题讨论】:

    标签: powershell scripting


    【解决方案1】:

    继续循环,直到输入字符串满足您的约束:

    do {
      $VM = Read-Host "Enter Server Name"
    } while($VM.Length -gt 15)
    

    【讨论】:

    • 这似乎不起作用...当我输入一个包含 16 个字符的名称时,它会吐出此错误 无法验证变量,因为值 1234567890123456 不是 VM 变量的有效值。输入 15 个字符的值就可以了。输入一个空白值也被接受,但空白值并不意味着被允许,它也意味着循环,所以输入了一些东西
    • @RogerDingo 这可能是因为您在与之前的尝试相同的 shell 中运行我的代码,其中$VM 具有[ValidateLength(0,15)] 约束集。在新的 PowerShell 实例中测试或在再次测试之前运行 Remove-Variable VM -Force
    • 啊是的你说得对...清除变量修复它。输入 16 个字符的名称会循环返回并要求输入名称。我如何满足空白值并让它循环回相同的输入问题?
    • 通过在条件下对其进行测试:while($VM.Length -gt 15 -or $VM.Length -lt 1)。或者while($VM.Length -notin 1..15)
    • argghh... 我把 OR 开关放在了,但忘记在前面添加减号!... 让我们试试...
    【解决方案2】:

    您可以执行以下操作:

    $VM = "anything over 15"
    
    while ($VM -match ".{15}" ){
    $VM = Read-Host "Enter Server Name"
    }
    

    我在这篇帖子post 中找到了有关检查长度的信息

    还有here's microsoft 关于 while 循环的文档。

    【讨论】:

      【解决方案3】:

      即使是 if 条件也可以。

      $VM = "qwertyuiop"
      
      if ($VM.length -gt 15) {
          Write-Output "Please enter more than 15 characters."
          $VM = Read-Host "Re-enter VM Name"
      }
      
      $VM
      

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 2019-04-15
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        相关资源
        最近更新 更多