PsExec 将列表中的第二台远程计算机视为程序名称

PsExec 将列表中的第二台远程计算机视为程序名称

PsExec 在特定服务器上运行时行为非常奇怪

在大多数情况下,当我使用 PsExec 在多台远程计算机上运行程序时,它工作得很好。当我在一台特定计算机上运行相同的命令时,它会将逗号分隔列表中提供的第二台服务器视为程序名称。

这是我对远程服务器的调用:

psexec \\server11111,server11112 /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

输出如下:

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

PsExec could not start server11112 on server11111:
The system cannot find the file specified

当我在开发机器上运行此命令时,它运行正常。但是,当我从运行 Windows 2012 的服务器运行同一命令时,它失败了,我得到了上面的输出。

答案1

扩展帕特里克回答\\computer[,computer2[,...],您可以使用文本文件中的计算机列表,而不是使用该格式列出服务器。

来自psexec文档(通过psexec /?):

Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]

     @file      PsExec will execute the command on each of the computers listed
                in the file.

也就是说,您可以computers.txt在工作的目录中创建一个填充有计算机名称的文本文件(例如):

computer
computer2
computer3

然后你可以使用以下命令:

psexec @computers.txt /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

psexec然后将在每台计算机上按照中指定的顺序运行该命令computers.txt

答案2

非从命令行调用列表:

psexec @ListOfServers /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

答案3

也许逗号后面有一个不显示的字符。我得到了完全相同的结果

PsExec 无法在 <server1> 上启动 <server2>:

如果逗号后有空格,则会出现错误。

相关内容