PowerShell调用srvrmgr.exe执行Siebel查询无输出文件问题求助
问题根因&修复方案
你当前代码仅定义了命令字符串,没有实际触发执行,所以输出文件不会生成任何内容,同时还有参数解析异常的潜在风险,按以下步骤调整即可:
1. 核心修复:补充命令执行逻辑
PowerShell 中不要直接拼接字符串作为外部命令执行,很容易出现路径、参数解析错误,推荐用参数数组+调用符的方式执行,避免转义问题。
修复后完整代码如下:
# 输入文件路径 $InputFile = "C:\Siebel\SiebelInput.txt" # 输出文件路径 $OutputFile = "C:\Siebel\siebelOutput.txt" # srvrmgr 可执行文件路径 $srvrmgrPath = "C:\Siebel\siebsrvr\BIN\srvrmgr.exe" # 前置校验输入文件存在 if (-not (Test-Path -Path $InputFile -PathType Leaf)) { Write-Host "错误:输入文件 $InputFile 不存在,请检查路径配置" exit 1 } # 构造参数数组,避免字符串拼接的解析异常 $arguments = @( "/g", "SblGateway", "/e", "ENT_17", "/u", "SADMIN", "/p", "xxxx", "/i", "`"$InputFile`"", "/o", "`"$OutputFile`"" ) # 执行srvrmgr命令,等待执行完成 & $srvrmgrPath $arguments # 若需要排查执行错误,可以用下面的写法获取执行退出码 <# $runResult = Start-Process -FilePath $srvrmgrPath -ArgumentList $arguments -Wait -NoNewWindow -PassThru Write-Host "命令执行退出码:$($runResult.ExitCode)" #>
2. 其他异常场景排查
如果调整后还是没有输出,按以下顺序检查:
- 确认运行脚本的账号对
srvrmgr.exe、输入文件有读权限,对输出文件所在的C:\Siebel\目录有写权限 - 直接在cmd中手动执行
srvrmgr.exe /g SblGateway /e ENT_17 /u SADMIN /p xxxx /i C:\Siebel\SiebelInput.txt /o C:\Siebel\siebelOutput.txt,确认网关地址、企业实例名、账号密码、输入文件中的查询语法没有错误,手动执行可正常生成输出 - 如果路径中存在空格,必须给对应路径用双引号包裹,避免参数解析错位
内容的提问来源于stack exchange,提问作者SatishMattad
相关产品推荐
相关产品推荐

