2013-09-05 3 views
0

powershell 버전 2.0 (Windows Server 2008)을 사용하여 원격 컴퓨터에서 Apache 및 mysql 서비스를 시작/중지하고 싶습니다. 나는 다음과 같이 원격 실행을위한 구문을 발견powershell (버전 2.0) 자격 증명을 사용하여 서비스를 원격 실행

(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'").InvokeMethod("Stop-Service",$null) 

하지만이 exceution에 대해서도 자격 증명 (DOMAIN_NAME \ USERNANE 및 PASSWORD)를 제공해야합니다. 필자는 powershell을 처음 사용하기 때문에 구문을 올바르게 이해할 필요가 있습니다 (예를 들어 이해하기 쉽고 구현하기 쉽습니다).

답변

3

Get-WMIObject-Credential 매개 변수를 허용합니다. 스크립트에 일반 텍스트로 자격 증명을 유지해서는 안되므로 프롬프트를 표시해야합니다.

$creds = get-credential; 
(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'" -credential $creds).InvokeMethod("Stop-Service",$null) 

원격 시스템에서 PSRemoting을 사용하는 경우 WMI없이이 작업을 수행 할 수 있습니다. 의견

예약 된 작업으로이 작업을 실행하고 있기 때문에 기반으로

$creds = get-credential; 
Invoke-Command -computername myCompName -credential $creds -scriptblock {(get-service -name myServiceName).Stop()}; 

업데이트, 당신은 저장하거나 전혀 자격 증명을 자극해서는 안된다. 예약 된 작업 자체를 예약 된 작업을 통해 필요한 사용자 계정으로 실행하도록 구성한 경우 다음 중 하나가 작동해야합니다.

# Your original code 
(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'").InvokeMethod("Stop-Service",$null) 
# If you have remoting enabled 
Invoke-Command -computername myCompName -scriptblock {(get-service -name myServiceName).Stop()}; 
+0

빠른 답장을 보내 주셔서 감사합니다. DOMAIN_NAME \ USERNANE 및 PASSWORD를 어떻게 전달할 수 있는지 알고 싶습니다. 자격 증명을 요구해서는 안되므로 shedule 작업을 만들어야합니다. .txt 파일에 세부 정보를 저장하는 것이 효과적 일 수 있습니다. 나는 powershell programer가 아니기 때문에 내가 뭔가를 놓치고 있는지 알려주지. –

+1

예약 된 작업으로 수행한다는 사실은 원래 게시물에 있었어야합니다. 일반 텍스트 * 아무 곳이나 *에 자격 증명을 저장하면 안됩니다. *를 해당 사용자 *로 실행하도록 예약 된 작업을 구성합니다. 그런 다음 내 게시물에서 자격 증명과 관련된 모든 것을 건너 뜁니다. – alroc

+0

비밀번호를 저장하지 않고 특정 사용자가 나를 도울 것입니다. 관리자로서 (get-service -ComputerName myCompName -Name myServiceName) .Stop()에 의해 서비스를 시작/중지 할 수 있습니다. 나는 당신의 제안에 따라 요구 사항을 구현할 것입니다. 고마워. –

관련 문제