PowerShell执行Fortinet注销命令时解析选项出错求助
问题与解决方案:Fortinet注销PowerShell脚本报错
问题详情
执行Fortinet注销操作的PowerShell脚本代码如下:
$kk | & $exePath -ArgumentList $unregisterArgs -nonewwindow
其中$kk是注销所需的密码,运行脚本时出现错误:
error parsing options: Option 'A' does not exist
尝试改用Invoke-Expression后出现其他错误,但这段代码直接在PowerShell窗口单独运行时可正常执行。
原因分析
- 使用
&运算符调用可执行文件时,-ArgumentList是错误的参数传递方式,PowerShell会将其当作可执行文件的普通参数传递,导致程序解析参数时出错。 - 参数数组
$unregisterArgs未正确展开时,会被当成单个字符串传递,造成程序误解析参数。
修正方案
将代码修改为以下形式,使用**数组展开运算符@**正确传递参数列表:
$kk | & $exePath @unregisterArgs -nonewwindow
说明
@unregisterArgs会将数组中的每个元素作为独立参数传递给可执行文件,避免参数被错误拼接。- 移除错误的
-ArgumentList参数,&运算符支持直接在可执行文件路径后跟随参数列表。 - 保留管道传递密码的方式,Fortinet注销程序通常从标准输入读取密码,这种传递方式有效。
内容的提问来源于stack exchange,提问作者Minh Stewart
相关产品推荐
相关产品推荐

