如何在Powershell中运行批处理文件?



传统上,我可以这样做:

Start-Process -FilePath "\serverInstall.bat" -Wait

然而,每次我运行它,一个命令提示符会在屏幕上闪烁,然后消失,安装程序永远不会启动。但如果我导航到批处理文件的位置,双击它手动运行它运行得很好。我发誓我以前做过这个,但是Powershell无法运行批处理文件吗?

编辑批处理文件代码:

SentinelAgent_windows_v4_4_2_143.exe /SITE_TOKEN=(sitecode) /SILENT

sitecode显然包含了我们设施的正确站点代码。

编辑2:附加信息:

我的Start-Process包含批处理文件的FQDN路径。我还尝试了&与FQDN到批处理文件,以及尝试Powershell内的CLI命令。所有的结果都是一样的。我也试过包括start SentinelAgent_windows_v4_4_2_143.exe以及start /wait SentinelAgent_windows_v4_4_2_143.exe到批处理文件与相同的结果。

我仍然可以通过双击它手动运行批处理文件,它工作得很好。但无论我如何尝试从Powershell调用它,它都会失败,;"SentinelAgent_windows_v4_4_2_143.exe不被识别为内部或外部命令";

编辑3,因为在注释中需要太多字符来响应:

CMD到PowerShell,运行带有XML链接的exe作为可能的故障排除步骤。我尝试了以下所有方法,包括FQDN:

\server.domain.comSentinelAgent_windows_v4_4_2_143.exe /SITE_TOKEN=xxxxx /SILENT
& \server.domain.comSentinelAgent_windows_v4_4_2_143.exe /SITE_TOKEN=xxxxx /SILENT
Start-Process -Wait -FilePath "\server.domain.comSentinelAgent_windows_v4_4_2_143.exe" -ArgumentList '/SITE_TOKEN=xxxxx', '/SILENT'
Start-Process -Wait "\server.domain.comSentinelAgent_windows_v4_4_2_143.exe" '/SITE_TOKEN=xxxxx', '/SILENT'

所有这些都直接指向。exe文件,在搜索中使用FQDN,并产生以下结果:"SentinelAgent_windows_v4_4_2_143.exe不被识别为内部或外部命令">

我还尝试将文件重命名为SentinelAgent.exe但它只是返回相同的错误与更新的名称。

我也试过将整个目录复制到C:Temp并在那里运行。bat/.exe命令-相同的错误信息。

我用过:

Invoke-Expression -Command 'cmd.exe /C <executable path and args>'

这是特定于运行命令行命令的。可执行文件不应该是一个问题,因为操作系统知道如何处理这种类型的文件。正如其他人指出的那样,在这种情况下,.cmd或.bat文件不提供任何值,并且会造成模糊。

在这种情况下,语句将是:

Invoke-Expression -Command 'cmd.exe /C \serverSentinelAgent_windows_v4_4_2_143.exe /SITE_TOKEN=xxxxx /SILENT'

最新更新