2013-09-05 2 views
0

Я хочу запустить/остановить службы apache и mysql на удаленной машине с помощью powershell версии 2.0 (Windows Server 2008). Я нашел синтаксис для удаленного выполнения следующим образом:Powershell (версия 2.0) удаленное выполнение служб с учетными данными

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

Но я должен предоставить учетные данные (DOMAIN_NAME \ USERNANE и пароль) и для этого exceution. Я новичок в 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. Поскольку мне нужно создать задачу расписания, чтобы она не запрашивала учетные данные. Возможно, будет храниться информация в TXT-файле. Я не программист, поэтому дайте мне знать, если я что-то упустил. –

+1

Тот факт, что вы делаете это как запланированное задание, должен был быть в вашем первоначальном посте. Вы не должны хранить учетные данные в текстовом формате * в любом месте *. Настройте запланированную задачу для выполнения * в качестве этого пользователя *. Затем пропустите все вокруг учетных данных в моем сообщении. – alroc

+0

Я пропустил опцию запуска, поскольку конкретный пользователь поможет мне, не сохраняя пароль. Как administartor я могу запустить/остановить службу (get-service -ComputerName myCompName -Name myServiceName) .Stop(). Я буду выполнять свои требования согласно вашему предложению. Большое спасибо. –