2008-10-06 7 views

답변

1

본인은 프로덕션 환경에서이 파일을 실제로 사용하지 않았으며 사용중인 버전 (릴리스 2.1.3155.0 사본 있음)과 함께 제공되는 .chm 도움말 파일에 따라 작업에 다음과 같은 내용이 포함되어 있습니다. 특성 :

지정된 서비스가 서비스가
  • ServiceName은 시스템에 서비스를 식별하는 짧은 이름 비활성화 된 경우 TRUE를 반환 IsDisabled
  • 존재하는 경우에 true를 돌려줍니다 DoesExist
    • .

    ServiceName을 "시스템에 서비스를 식별하는 짧은 이름 (예 : 'W3SVC')으로 설정해야합니다.

    잘 알려진 서비스 (예 : mssqlserver)를 사용하여 시도하고 다른 두 속성 (DoesExist/IsDisabled)의 결과를 확인할 수 있습니다.

    업데이트 : 다음은 샘플 (작품)입니다 :

    가져 오기 작업 후> < 출력 (예)

    < Microsoft.Sdc.Tasks.ServiceProcess.Exists ServiceName은 = "서버"전화 TaskParameter는 = "DoesExist"PROPERTYNAME는 = />

    "서비스는? $ (존재) 존재"를 = /> < /Microsoft.Sdc.Tasks.ServiceProcess.Exists>

    < 메시지 텍스트를 "존재"

  • 2

    서비스를 확인한 후 서비스를 중지하고 서비스를 중지 한 다음 서비스를 다시 시작합니다 (서비스가있는 경우 서비스가 시작된 경우).

    도우미 대상 :

    <target name="service_exists"> 
        <script language="C#"> 
         <references> 
          <include name="System.ServiceProcess.dll" /> 
         </references> 
         <code><![CDATA[ 
          public static void ScriptMain(Project project) { 
           String serviceName = project.Properties["service.name"]; 
           project.Properties["service.exists"] = "false"; 
           project.Properties["service.running"] = "false"; 
    
           System.ServiceProcess.ServiceController[] scServices; 
           scServices = System.ServiceProcess.ServiceController.GetServices(); 
    
           foreach (System.ServiceProcess.ServiceController scTemp in scServices) 
           { 
            if (String.Compare(scTemp.ServiceName.ToUpper(), serviceName.ToUpper()) == 0) 
            { 
             project.Properties["service.exists"] = "true"; 
             project.Log(Level.Info, "Service " + serviceName + " exists"); 
             if (scTemp.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Running)) 
              project.Properties["service.running"] = "true"; 
             project.Log(Level.Info, "Service " + serviceName + " is running: " + project.Properties["service.running"]); 
             return; 
            } 
           } 
           project.Log(Level.Info, "Service " + serviceName + " doesn't exist"); 
          } 
         ]]></code> 
        </script> 
    </target> 
    

    사용법 :

    <property name="service.name" value="Selection.Service" /> 
    <call target="service_exists" /> 
    
    <servicecontroller action="Stop" service="${service.name}" machine="${host}" timeout="60000" if="${service.exists}"/> 
    
    <!-- Do something --> 
    
    <servicecontroller action="Start" service="${service.name}" machine="${host}" timeout="60000" if="${bool::parse(service.exists) and bool::parse(service.running) == true}"/> 
    

    희망 난 아무것도 놓치지 않았다 - 우리 빌드 관리자가 3600 개 라인을 통해 이제 하나 개의 MSBuild 파일에 모든 것을 유지 : |

    관련 문제