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>를 시작할 수 없습니다.

쉼표 뒤에 공백이 있으면 오류가 발생합니다.

관련 정보