使用 PsExec 从共享文件夹远程运行应用程序

使用 PsExec 从共享文件夹远程运行应用程序

我实际上不确定这是否可能。让我们看看:

我有一个在 Build 服务器上运行的脚本。我们将其命名为服务器 A。
它将 bins 放到服务器 B 上的共享文件夹中。我想在服务器 C 上运行该程序。

因此,使用 caspol 我可以允许可执行文件远程运行。这意味着从 BI 可以运行 \C\shared\my.exe

我想要做的是从 A 在 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(工作目录)选项显然需要相对于我指向的服务器的路径。有什么想法吗?

答案1

在不知道应用程序做什么的情况下,您是否需要定义工作路径?我可能错了,但我不相信 UNC 路径受支持?那么,使用一点小技巧,映射网络驱动器并将其捆绑在脚本中如何?例如:

pushd \\ServerB\Nightly\Server
server.exe
popd

将其放入脚本中,然后使用 psexec 调用它:

psexec -u username -p password \\machine -accepteula -i 0 -d \\serverb\nightly\server\myscript.bat

命令将下一个可用的驱动器号映射到共享,然后将目录更改为该新映射。弹出返回上一个路径,并卸载驱动器。

答案2

也尝试使用 -e 开关(不尝试加载用户的配置文件)不太确定“-accepteula”开关,因为据我所知 psexec 没有提示输入一个开关,而且这似乎不是 psexec 的有效开关……

2 个开关“-i”和“-d”相互矛盾,因为 -i 使其以交互方式运行,而 -d 表示仅将其用于非交互式应用程序。我从未需要使用任何一个开关。

我发现,解决涉及远程系统的麻烦操作的最佳方法是首先尝试在本地运行它,然后慢慢开始将不同的组件移动到远程框并让它们从那里开始工作。这样你就能准确地找出你最初尝试的语法中的问题所在。

psexec 用法

答案3

我可以这样做:

psexec -s -username domain\username -p MyPassw@rd @c:\temp\computers.txt \\fileserver\SCCMClient\CCMSetup.exe

-s需要避免出现“访问被拒绝”错误 -username,并且-p需要连接到具有可执行文件的文件服务器

我个人认为 PSExec 是一个很棒的小工具!

答案4

您可以在脚本中将要运行的内容复制到本地计算机磁盘,然后在运行后将其删除。使用 robocopy.exe \UNC-Path LocalDestionation 复制文件,运行它,然后将其删除。请记住,您始终可以使用 %Temp% 等环境变量。

对于使用 Sysinternals PSExec 运行的情况,您可以尝试制作一个运行以 PSExec 开头的每个脚本的脚本。您可以在脚本中使用 SET 命令来设置用户名等环境变量。

相关内容