2012-09-14 4 views
0

기본적으로, "server.txt"라는 텍스트 파일에 이름이 언급 된 100 개의 서버에서 "sc"명령을 실행하기 만하면됩니다. 나는 다음을 시도하고 그것이 빈 메모장 파일을 반환하므로 그것은 작동하지 않습니다.배치 파일을 통해 명령을 원격으로 실행하는 방법은 무엇입니까?

for /f %%a in (servers.txt) do sc \\server_name query | find "SERVICE_NAME">>servicecontroller.txt 

위의 명령을 로컬에서 시도했지만 정상적으로 작동했습니다. 문제가 "\ server_name"에 있음을 압니다. 그것에 대해 무엇이 잘못되었는지 확실하지 않습니다. 숨겨진 공유를 사용해야합니까? 어쩌면?

\\server_name\c$ /user:domain\username password  

또는 이와 유사합니까?

\\server_name\c$ 

답변

1

%%a이 아닌 \\server_name이 하드 코드 된 경우 문제가 발생합니다. 대신이 시도 :

for /f %%a in (servers.txt) do sc \\%a query | find "SERVICE_NAME">>servicescontroller.txt 

편집 : 다음 줄은 모든 서버에 지속적으로 관리자 권한을 얻는 데 도움이됩니다. 이것은 내가 (OP)가 찾고 있던 선이다.

net use \\servername\ipc$ /u:domain\user password 
+0

"%% a"작업을 수행했습니다. 그것을 하드 코딩하지 않았습니까. 문제는 내가 사용자 및 패스와 함께 도메인 모드를 사용해야하는지 잘 모르겠다는 이유가 사용 권한 문제 때문입니다. – Gutsygibbon

+0

어쨌든 나는 옳은 길을 가고 있기 때문에 +1 할거야. – Gutsygibbon

+0

아, 알겠습니다. sc는 현재 로그인 한 계정으로 원격 시스템에 대한 관리자 액세스 권한이 있다고 가정합니다. 다른 자격 증명을 사용하려는 경우 다음을 사용하십시오. net use \\ servername \ ipc $/u : domain \ user password 암호가 일반 텍스트 인 경우에 대한 표준주의 사항을 입력하십시오. – Mark

2

PsExec을 사용하여 네트워크의 원격 시스템에서 명령을 실행할 수 있습니다. 배치 파일을 실행하고 매개 변수를 전달하고 실행중인 서비스를 확인하는 데이 파일을 사용합니다. 텍스트 파일에 나열된 여러 컴퓨터에서 실행되는 특별한 구문이 있습니다.

또는 powershell이 ​​옵션 인 경우 powershell remoting을 사용할 수도 있습니다.

+1

흠, PSexec를 설치하지 않고도 배치 솔루션을 선호합니다. – Gutsygibbon

1

또 다른 방법으로, 당신은 그것을 위해 WMIC 사용할 수 있습니다

을 (다른 형식 사이에) 목록으로 잘 HTML 형식의 테이블을 한 번에 여러 시스템에 대해 실행하고 저장 :의

wmic /node:@servers.txt /output:services.html service get caption /format:htable 

물론 이름/캡션 외에도 더 많은 특성을 쿼리 할 수 ​​있습니다.

+0

이미 시도했습니다. 한계는 무엇입니까? 서비스 이름을 "그냥"얻을 수는 없습니다. – Gutsygibbon

+0

@Gutsygibbon 그것이 당신의 필요에 맞지 않는다면, 그렇게하십시오. 당신은 코드 마스터입니다 :)하지만 당신이 무엇을 의미하는지 모르겠습니다. '/ format'을 생략하면'get name'을 사용하여 한 줄에 서비스 이름 만있는 텍스트 파일을 얻을 수 있습니다. 주먹 선으로 '이름'을 포함 시키지만 쉽게 제거 할 수 있습니다. – wmz

+0

흠, 지난 호에 전혀 언급하지 않았습니다. 문제는 두 가지 종류의 서버 (2003 년과 2008 년)입니다. 두 버전 모두 Windows Installer와 SNMP의 버전이 다르므로 WMIC은 둘 다 다릅니다.그리고 WMIC을 사용하더라도 일부 원격 서버에서는 여전히 인증 문제가 있습니다 (LDAP 서버에서 문제가 있음). 특정 자격 증명을 지정하여 서버에 액세스 한 다음 sc 또는 wmic를 실행하는 방법을 원했습니다. 그 문제는 다시 그 신임장으로 병입됩니다. 죄송합니다. "서비스 이름을 가져올 수 없습니다." 아무것도 하하를 정당화하지 않았다. – Gutsygibbon

관련 문제