您是否尝试在启动程序时将命令行参数传递给程序?
我现在正在做的事情正是这样做的,它比我想象的要简单得多。
如果我进入命令行,然后输入
C:\folder\app.exe/xC:\folder\file.txt
然后我的应用程序启动,并在指定目录中创建一个具有指定名称的文件。
我想通过远程机器上的 Powershell 脚本来做这件事,然后发现我需要做的就是放置
$s = New-PSSession -computername NAME -credential LOGIN
Invoke-Command -session $s -scriptblock {C:\folder\app.exe /xC:\folder\file.txt}
Remove-PSSession $s
(我在会话中有很多类似的命令,这只是它运行所需的最低限度)
注意可执行文件和命令行参数之间的空格。
它对我有用,但我不确定你的应用程序究竟是如何工作的,或者你是否就是这样向它传递参数的。
*我还可以通过将脚本块更改为
,让我的应用程序将文件推送回我自己的本地计算机
C:\folder\app.exe /x"\\LocalPC\DATA (C)\localfolder\localfile.txt"
如果文件路径中有空格,则需要引号。
编辑:实际上,这带来了 Powershell 将应用程序作为服务或其他东西启动的一些愚蠢问题,所以我做了一些搜索,发现您可以调用 CMD 在远程计算机上为您执行命令。
这样,该命令的执行就像您刚刚在远程计算机上的 CMD 窗口中键入一样。将脚本块中的命令放在双引号中,然后在其前面加上一个cmd.exe /C。像这样:
cmd.exe /C "C:\folder\app.exe/xC:\folder\file.txt"
这解决了我最近遇到的所有问题。
编辑编辑:
遇到了更多问题,并找到了更好的方法。
start-process -filepath C:\folder\app.exe -argumentlist "/xC:\folder\file.txt"
这不会挂起您的终端窗口等待远程进程结束。
只要确保您有办法终止该过程,如果它自己不这样做。 (我的没有,需要编码另一个参数)