You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何设置输入字符上限为15,超出时重新提示输入而非报错

PowerShell 输入长度限制实现方案

你不需要使用[validatelength()]属性,也无需单独写IF语句做检测,直接把长度校验规则整合到until的终止判断条件即可实现需求:

do {
    $VM = Read-Host "Enter Server Name"
} until ($VM -and $VM.Length -le 15)

上述代码只有在输入非空且字符长度不超过15时才会退出循环,不符合要求时会自动回到输入询问环节。

如果需要给用户明确的错误提示,可以在循环内增加判断逻辑:

do {
    $VM = Read-Host "Enter Server Name"
    $isValid = $true
    if (-not $VM) {
        Write-Host "错误:服务器名称不能为空,请重新输入" -ForegroundColor Red
        $isValid = $false
    } elseif ($VM.Length -gt 15) {
        Write-Host "错误:服务器名称长度不能超过15个字符,请重新输入" -ForegroundColor Red
        $isValid = $false
    }
} until ($isValid)

原写法报错原因说明

你之前使用[validatelength()]的写法会直接报错,是因为该属性是PowerShell的参数验证属性,赋值时不满足规则就会抛出终止级错误,不会自动进入下一次循环。如果想要保留该属性的写法,可以增加try-catch捕获错误:

do {
    try {
        [string][validatelength(1,15)] $VM = Read-Host "Enter Server Name"
        $inputValid = $true
    } catch {
        $inputValid = $false
        Write-Host "错误:服务器名称长度需控制在1-15个字符之间,请重新输入" -ForegroundColor Red
    }
} until ($inputValid)

内容的提问来源于stack exchange,提问作者RogerDingo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:54:06