MSBuild Comminity Tasks이 필요합니다. 최신 빌드에서는 MSBuild.Community.Tasks.v1.2.0.306 \ Source \ Services.proj에 예제가 있습니다. 그것은 당신의 질문의 첫 번째 부분을 해결할 수 :
이
<PropertyGroup>
<MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\MSBuild.Community.Tasks\bin\Debug</MSBuildCommunityTasksPath>
</PropertyGroup>
<Import Project="$(MSBuildProjectDirectory)\MSBuild.Community.Tasks\MSBuild.Community.Tasks.Targets"/>
<Target Name="Test">
<CallTarget Targets="DoesServiceExist" />
<CallTarget Targets="GetServiceStatus" />
<CallTarget Targets="ServiceControllerStuff" />
</Target>
<Target Name="DoesServiceExist">
<ServiceQuery ServiceName="MSSQLServer123" MachineName="127.0.0.1" >
<Output TaskParameter="Exists" PropertyName="Exists" />
<Output TaskParameter="Status" PropertyName="ServiceStatus" />
</ServiceQuery>
<Message Text="MSSQLServer Service Exists: $(Exists) - Status: $(ServiceStatus)"/>
</Target>
<Target Name="GetServiceStatus">
<ServiceQuery ServiceName="MSSQLServer" MachineName="127.0.0.1">
<Output TaskParameter="Status" PropertyName="ResultStatus" />
</ServiceQuery>
<Message Text="MSSQLServer Service Status: $(ResultStatus)"/>
</Target>
<Target Name="ServiceControllerStuff">
<ServiceController ServiceName="aspnet_state" MachineName="127.0.0.1" Action="Start" />
<ServiceController ServiceName="aspnet_state" MachineName="127.0.0.1" Action="Stop" />
</Target>
사람들은 MSBuild 작업이 닷넷 클래스 ServiceController 주변 단지 래퍼입니다. 작동 방식과 세부 구성 방법을 이해하는 데 필요한 설명서를 찾아보십시오.
두 번째 파트에는 설치 서비스가 포함됩니다. 그 목적을 위해 sc.exe 정장 very well.
감사합니다. 질문이있다. 서비스 쿼리는 원격 컴퓨터 또는 로컬 서비스의 서비스 상태 만 확인할 수 있습니까? – lostaman
기본 스크립트를 업데이트하고 지원되는 매개 변수 MachineName = "127.0.0.1"을 정의하여 서버에 연결합니다. –