我想使用powershell 2.0版(Windows Server 2008)在远程计算机上启动/停止apache和mysql服务。我找到了远程执行的语法如下:
(Get-WmiObject -Computer myCompName Win32_Service -Filter "Name='myServiceName'").InvokeMethod("Stop-Service",$null)
但是我必须提供凭据(DOMAIN_NAME \ USERNANE和PASSWORD)。我是powershell的新手,需要帮助才能获得正确的语法(例子很容易理解和实现)。
答案 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()};