PsExec 在第二次调用时无法连接

PsExec fails to connect on second call

我运行遇到了使用 psexec 从机器 B 连接到远程机器 A 的问题。

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

The handle is invalid.
Connecting to <server>...
Couldn't access <server>:

让我感到困惑的部分是,就在这之前,我们有一个从机器 B 到机器 A 的脚本调用,它工作得很好。 (如果相关的话,这是通过 powershell 脚本完成的)。

这是第一个调用(有效)

& psexec \$computer_name -u "<domain>/<user>" -p "<pass>" -w "<folder>" "<program1>" 2

这是第二次调用(在第一次之后直接执行)

& psexec \$computer_name -u "<domain>/<user>" -p "<pass>" -w "<folder>" "<program1>" 1

当我只从另一台机器(机器 C 指向机器 A)获取脚本的那部分 运行 时,我可以让它工作,这让我认为两者不太可能互相干扰。我一直在寻找一种方法来断开 psexec 与计算机的连接,但我没有找到任何东西,所以我不确定是否有办法。

我在超级用户上找到了一个答案,提示它可能受到会话限制 https://superuser.com/questions/200938/psexec-the-handle-is-invalid,但我检查后发现只有一个连接处于活动状态。

如能帮助找出问题所在,我们将不胜感激。

我只是 运行 对此感兴趣,并且尝试了一下,我找到了一个解决方法来解决这个问题。

如果它们与第一次通话中的相同,请尝试从第二次通话中删除帐户凭据。您的通话将如下所示:

第一个:
& psexec \\$computer_name -u "domain/user" -p "pass" -w "folder" "program1" 2

第二个:
& psexec \\$computer_name -w "folder" "program1" 1

我运行也遇到过这个问题。我的解决方案是将所有远程命令放在一个批处理文件中 PSEXEC_COMMANDS.cmd 和 运行 PsExec 一次:

PsExec \<computer> <options> -c PSEXEC_COMMANDS.cmd <arguments>

  • 来源:
  • 有关 -c 开关的更多信息来自 PsExec 的作者 here

    [I]f it's an executable on the local system that you want to execute on the remote system, specify the -c switch and the file's local path. The -c switch directs PsExec to copy the specified executable to the remote system for execution and delete the executable from the remote system when the program has finished running.