如何实现读取手机号文件、展示可选列表并将选中值赋值给$number?
PowerShell手机号选择脚本解决方案
我来帮你搞定这个需求!你已经完成了读取手机号文件的第一步,接下来咱们把列表展示得更友好,加上用户选择的功能,最后把选中的号码传给后续命令。
1. 先优化手机号读取(过滤无效内容)
首先,咱们可以给读取步骤加个过滤,确保只有有效的手机号(比如国内11位数字),避免空行或者无效内容干扰后续操作:
# 读取手机号文件,过滤空行和非11位数字的无效号码 $numbers = Get-Content 'C:\temp\file.txt' | Where-Object { $_ -match '^\d{11}$' } # 检查是否有有效号码,没有的话直接提示退出 if ($numbers.Count -eq 0) { Write-Host "⚠️ 没有找到有效的手机号,请检查文件内容!" -ForegroundColor Red exit }
2. 美观展示手机号列表
给每个号码加上序号,用户看起来更清晰,也方便选择:
Write-Host "`n📋 可用手机号列表:" -ForegroundColor Cyan for ($i = 0; $i -lt $numbers.Count; $i++) { # 序号从1开始,符合用户的使用习惯 Write-Host "$($i+1). $($numbers[$i])" }
3. 实现用户选择与输入验证
为了避免用户输入错误,咱们做个循环验证,确保输入的是合法范围内的数字:
do { $userInput = Read-Host "`n请输入你要选择的号码序号(1-$($numbers.Count))" # 验证输入是否为有效数字,且在1到号码总数之间 $isValid = [int]::TryParse($userInput, [ref]$selectedIndex) -and $selectedIndex -ge 1 -and $selectedIndex -le $numbers.Count if (-not $isValid) { Write-Host "❌ 输入无效,请输入1到$($numbers.Count)之间的数字!" -ForegroundColor Red } } while (-not $isValid) # 把选中的号码赋值给变量(注意数组索引从0开始,所以要减1) $selectedNumber = $numbers[$selectedIndex - 1] Write-Host "`n✅ 你选中的号码是:$selectedNumber" -ForegroundColor Green
4. 完整脚本示例(直接可用)
把上面的步骤整合起来,再加上后续的命令调用(替换成你实际要用的命令就行):
# 1. 读取并过滤手机号列表 $numbers = Get-Content 'C:\temp\file.txt' | Where-Object { $_ -match '^\d{11}$' } if ($numbers.Count -eq 0) { Write-Host "⚠️ 没有找到有效的手机号,请检查文件内容!" -ForegroundColor Red exit } # 2. 美观展示手机号列表 Write-Host "`n📋 可用手机号列表:" -ForegroundColor Cyan for ($i = 0; $i -lt $numbers.Count; $i++) { Write-Host "$($i+1). $($numbers[$i])" } # 3. 获取并验证用户选择 do { $userInput = Read-Host "`n请输入你要选择的号码序号(1-$($numbers.Count))" $isValid = [int]::TryParse($userInput, [ref]$selectedIndex) -and $selectedIndex -ge 1 -and $selectedIndex -le $numbers.Count if (-not $isValid) { Write-Host "❌ 输入无效,请输入1到$($numbers.Count)之间的数字!" -ForegroundColor Red } } while (-not $isValid) $selectedNumber = $numbers[$selectedIndex - 1] Write-Host "`n✅ 你选中的号码是:$selectedNumber" -ForegroundColor Green # 4. 将选中的号码传入后续命令(替换成你的实际命令) Write-Host "`n正在执行添加用户操作..." -ForegroundColor Yellow # 这里替换成你实际要运行的添加用户命令,比如: # New-User -PhoneNumber $selectedNumber Write-Host "添加用户完成,使用号码:$selectedNumber" -ForegroundColor Green
小提示
- 如果你的手机号不是11位,只需要修改过滤的正则表达式就行,比如国外的号码可以调整为
^\+?\d{10,15}$ - 脚本里用了颜色提示,让用户更直观地看到状态,你可以根据喜好调整颜色或者去掉颜色
内容的提问来源于stack exchange,提问作者Jvdb
相关产品推荐
相关产品推荐

