2011-02-13 5 views
3

MSBuild를 사용하여 다른 컴퓨터에서 Windows 서비스를 원격으로 시작하거나 중지하고 싶습니다.MSBuild를 사용하여 원격으로 서비스를 시작/중지 할 수 있습니까?

프로젝트 "C : test.xml의 \ \ 스크립트"나는 BOX2를 볼 수있는 컴퓨터에 그 프로그램을 실행할 때

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 
    <Target Name="MyTarget"> 
    <ServiceController MachineName="Box2" ServiceName="MyService" Action="Stop" /> 
    </Target> 
</Project> 

, 나는이 얻을 :이 작업을 수행하려면,이 스크립트를 작성 노드 1 (기본값 대상)에 있습니다.

C : 오류 : 가 가 '이면 MyService' 프로젝트를

"C를 구축 완료 'BOX2'에 서비스를 찾을 수 없습니다 : \ 스크립트 test.xml의 \ 스크립트 (4,5) \ \ Test.xml "(기본 대상) - FAILED.

서비스 이름이 정확하고 (실제 서비스 목록에서 복사하고 붙여 넣었습니다.) 컴퓨터 이름을 변경하면 Box2가 표시 될 수 있다고 확신합니다. (예 : Box2asdf) 정확한 컴퓨터 이름을 제공 할 때 얻을 수있는 즉각적인 응답과는 반대로 (정확히 같은 오류가 있습니다. 마음에 들었을 때) 약 10 초가 걸립니다.

어떻게이 문제를 디버깅 할 수 있습니까?

+0

이 : 그것은 주변 닷넷 예외 래퍼없이 네이티브 오류를 표시 할 수 있기 때문에

그리고 @의 jsobo의 대답은 실제 이유를 진단하는 것은 매우 유용 할 수 있습니다 MyService가 실제로 Box2에 설치 되었습니까? –

+0

예, 실행 중입니다. –

답변

2

이 대신 ...

당신은 명령 줄 프로그램 사우스 캐롤라이나를 사용하고 실행할 수 있습니다 시도 할 수 있습니다 ...

SC \의 서버 이름 정지 ServiceName은

http://support.microsoft.com/kb/166819

msbuild에서 명령을 실행하는 방법에 대한 자세한 내용은 다음을 확인하십시오. execute a command with parameters using msbuild

+0

SC를 사용할 수는 있지만 MSBuild를 사용하고 싶습니다. 명령을 실행할 수도 있습니다. –

0

커뮤니티 작업이 작동해야합니다. Sc 쿼리를 사용하여 서비스가 작동하는지 확인하십시오. msbuild를 사용하는 경우 여전히 exec에서 sc를 감싸는 경우 msbuild를 사용합니까? 적어도 빌드 프로세스에서 제 3 자 dll에 대한 종속성이 없습니다.

0

ServiceController Target은 내부적으로 ServiceController Class을 사용합니다. 그러나 서비스를 찾을 수없는 이유는 반환하지 않습니다. 컴퓨터와 서비스 이름이 모두 정확하다는 사실을 알고 있다면 다음으로 분석 할 수있는 것은 액세스 위반 문제입니다.

Sc.exe를 \ BOX2 중지이면 MyService를

관련 문제