PowerShell查询WiFi密码脚本报错出现多余换行如何解决
WiFi密码查询PowerShell脚本多余换行问题修复
多余换行产生原因
你的脚本中Trap捕获异常时使用了Continue关键字,该配置会让脚本在执行完Trap内的逻辑后,继续运行异常触发点之后的剩余代码。
找不到指定WiFi时,$S = ($E | sls ($CmdL[2])).ToString().Trim()这行代码会因为sls返回空值调用ToString触发异常,Trap输出错误信息后,还会继续执行末尾的Write-Host语句,这就是多余换行的来源。
修复方法
方法1:修改Trap终止逻辑
直接把Trap中的Continue改为Break,捕获异常后直接终止后续代码执行,不会再运行末尾多余的Write-Host:
$CmdL = @("Command1", "Command2", "WIFI NAME") Trap [System.Management.Automation.RuntimeException] { Write-Color "No such WiFi exists" -Color "Red" Write-Host Break # 替换原来的Continue } $S = $Null $E = Get-AllWifiPasswords Write-Host $S = ($E | sls ($CmdL[2])).ToString().Trim() Write-Color $S -Color "Green" Write-Host
方法2:增加非空判断避免异常(更推荐)
提前判断sls的匹配结果是否为空,从根源避免触发异常,逻辑更健壮:
$CmdL = @("Command1", "Command2", "WIFI NAME") $S = $Null $E = Get-AllWifiPasswords Write-Host $matchRes = $E | sls ($CmdL[2]) if ($null -ne $matchRes) { $S = $matchRes.ToString().Trim() Write-Color $S -Color "Green" } else { Write-Color "No such WiFi exists" -Color "Red" } Write-Host
两种方法都可以实现你要的输出格式,错误场景下只会输出一个开头换行、错误提示、一个结尾换行,没有多余空行。
内容的提问来源于stack exchange,提问作者David Avarage
相关产品推荐
相关产品推荐

