如何让PowerShell脚本仅接受enable/disable命令行参数?
完善PowerShell脚本实现参数校验逻辑
针对需求——脚本仅接受enable或disable作为命令行参数,参数为空/非法时显示帮助提示,以下是完善后的代码及逻辑说明:
完整实现代码
# 定义允许的合法参数值 $validArguments = @('enable', 'disable') # 校验参数:数量必须为1,且值在合法列表内 if ($args.Count -ne 1 -or $validArguments -notcontains $args[0]) { $scriptFileName = Split-Path -Leaf $PSCommandPath Write-Host "错误:必须指定 enable 或 disable 作为唯一命令行参数。`n`n示例用法:`n.\$scriptFileName disable`n.\$scriptFileName enable" -ForegroundColor Red exit 1 } # 参数合法时执行后续业务逻辑 $selectedAction = $args[0] Write-Host "执行操作:*$selectedAction*" # 替换为你的实际业务代码,比如原代码中的系统信息输出 # Write-Host "$osName $bit (Build $buildNumber) Release ID $displayVersion"
逻辑说明
- 合法参数定义:用数组
$validArguments明确允许的参数值,便于后续维护和扩展 - 全面校验:同时检查参数数量(必须为1)和参数值(必须在合法列表内),覆盖了以下异常场景:
- 未提供任何参数
- 提供了多个参数
- 提供了
enable/disable之外的非法值
- 友好提示:动态获取当前脚本文件名,避免硬编码;用红色高亮错误信息,提升可读性;明确给出正确示例
- 终止执行:校验失败后用
exit 1终止脚本,避免后续错误逻辑执行
原代码的不足
原代码仅判断了参数为空的情况,未处理参数值非法、参数数量过多的场景,无法完全满足需求。
内容的提问来源于stack exchange,提问作者Darren
相关产品推荐
相关产品推荐

