代码之家  ›  专栏  ›  技术社区  ›  Kolichikov

PsExec在第二次呼叫时无法连接

  •  0
  • Kolichikov  · 技术社区  · 10 年前

    使用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 ,但我检查发现只有一个连接处于活动状态。

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

    2 回复  |  直到 8 年前
        1
  •  0
  •   DSB    9 年前

    我刚刚遇到了这个问题,我找到了一个解决方法。

    如果它们与第一次调用中的相同,请尝试从第二次调用中删除帐户凭据。然后,您的通话将显示为:

    第一:
    &psexec\\$computer_name-u“域/用户”-p“pass”-w“文件夹”“program1”2

    第二:
    &psexec\\$computer_name-w“文件夹”“program1”1

        2
  •  0
  •   andronoid    5 年前

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

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

    • 学分: https://stackoverflow.com/a/12393887/9718438
    • 有关 -c 从切换 PsExec公司 的作者 here :

      [一] 如果它是要在远程系统上执行的本地系统上的可执行文件,请指定-c开关和文件的本地路径。-c开关指示PsExec将指定的可执行文件复制到远程系统以供执行,并在程序完成运行后从远程系统删除可执行文件。