我其实不确定这是可能的。 让我们来看看:
我有一个在生成服务器上运行的脚本。 我们命名这个服务器A.
它将垃圾箱放到服务器B上的共享文件夹中。我想在服务器C上运行该程序。
所以使用caspol我可以允许远程运行可执行文件。 这意味着从BI可以运行\ C \ shared \ my.exe
我想要做的是在B上运行\ C \ shared \ my.exe。
SysInternals\PsExec.exe -u username -p password -accepteula \\ServerC -i 0 -d -w \\ServerB\Nightly\Server \\ServerB\Nightly\Server\server.exe
用户拥有所有必要的权利。
但是,-w(工作目录)选项显然需要一个相对于我指向的服务器的path。 任何想法?
不知道你的应用程序做什么,你需要定义工作path? 我可能是错的,但我不相信UNCpath被支持? 怎么样一个小小的诡计,并做一个networking驱动器的地图,并将其捆绑在一个脚本? 就像是:
pushd \\ServerB\Nightly\Server server.exe popd
把它放在一个脚本中,然后使用psexec来调用它:
psexec -u username -p password \\machine -accepteula -i 0 -d \\serverb\nightly\server\myscript.bat
pushd命令将下一个可用驱动器号映射到共享,然后将目录更改为新映射。 popd返回到以前的path,并卸载驱动器。
尝试与-e开关以及(不尝试加载用户的configuration文件)不太确定“-accepteula”开关,因为psexec不提示一个AFAIK,这似乎不是一个有效的切换为psexec …
2个开关“-i”和“-d”相互矛盾,因为-i使它交互式运行,-d只能用于非交互式应用程序。 我从来没有需要使用任何一个开关。
处理涉及我发现的远程系统的麻烦操作的最好方法是首先尝试在本地运行,然后慢慢地开始将不同的组件移动到远程盒子并从那里开始工作。 通过这种方式,您可以确切地知道问题出在您的原始尝试的语法中。
使用psexec
在脚本中,您可以将要运行的东西复制到本地计算机磁盘,运行后将其删除。 使用robocopy.exe \ UNC-Path LocalDestionation复制文件,运行它,之后删除它。 Remenber,你总是有像%Temp%使用环境variables。
对于使用Sysinternals PSExec运行的情况,您可以尝试制作一个运行每个以PSExec开头的蝙蝠行的蝙蝠。 您可以使用SET命令在蝙蝠中使用环境variables,例如用户名。
另外我build议你testing这个免费的软件,让你运行一个简单的GUI非常容易的远程命令: PQD部署 。