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>를 시작할 수 없습니다.
쉼표 뒤에 공백이 있으면 오류가 발생합니다.