您是否尝试将命令行参数传递给程序启动它? 我现在正在做的事情就是这样做,它比我想象的要简单得多。 如果我进入命令行,然后键入
C:\folder\app.exe/xC:\folder\file.txt
然后我的应用程序启动,并创建具有指定名称的指定目录下的文件。
我想通过一个远程计算机上的PowerShell脚本来做到这一点,想通了,所有我需要做的是把session里面
$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"
,这不挂断终端窗口等待远程进程结束。 只要确保你有办法终止这个过程,如果它自己不这样做的话。 (我的不需要编码另一个参数)
感谢您的快速响应。出于某种原因,当我尝试这种方式时,我将它打印出可以工作的扩展命令,如果我手动运行它,但它并不实际运行它。我不得不删除“&”,因为它表示它是未来使用的保留字符。 – gregs 2012-03-02 16:34:04
@gregs我必须在我的机器上启用远程测试才能测试。我将命令更改为发送localhost参数的简单ping测试。以上为我成功。 – 2012-03-02 17:16:37
我可能已经想通了,但不是解决方案。如果我使用ping.exe和“localhost”作为参数,这条线会起作用,但由于路径中有空格,所以我必须在我的可执行文件路径中加引号。当我这样做时,它只是将我的字符串回复给我,但我认为它不会运行。 – gregs 2012-03-02 18:24:59