Powershell(2.0版)使用凭据远程执行服务

时间:2013-09-05 10:37:54

标签: powershell windows-server-2008 powershell-v2.0

我想使用powershell 2.0版(Windows Server 2008)在远程计算机上启动/停止a​​pache和mysql服务。我找到了远程执行的语法如下:

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

但是我必须提供凭据(DOMAIN_NAME \ USERNANE和PASSWORD)。我是powershell的新手,需要帮助才能获得正确的语法(例子很容易理解和实现)。

1 个答案:

答案 0 :(得分: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()};