如何在多个服务器上远程更改服务帐户密码

时间:2015-05-14 14:59:58

标签: powershell passwords wmi credentials remote-server

我一直在搜索这里的档案,但我找不到一个简单的(即:我能理解的东西)解决我的问题的方法。我正在使用powershell和wmi更改服务帐户的密码。我可以在所有服务器上一次更改一个服务,如下所示:

sInstance

如您所见,我可以参考我想要的任何服务器以及该服务器上的任何服务。我想做的是以下

  1. 提供服务器列表(带有&#34的文本文件; REMOTESERVER1,REMOTESERVER2"或类似的东西
  2. 更改在相同凭据下运行的同一台计算机上的多个服务的密码。我能够使用-filter" StartName LIKE'%\ MYSERVICEACCOUNT'"来获取多个服务列表,但是当我尝试运行$ service.change来更新密码时,我收到错误
  3.   

    方法调用失败,因为[System.Object []]不包含名为' change'的方法。   在行:1字符:16   + $ service.change<<<< ($ NULL,$ NULL,$ NULL,$ NULL,$ NULL,$ NULL,$ NULL," newpasswordhere&#34)       + CategoryInfo:InvalidOperation :(更改:String)[],RuntimeException       + FullyQualifiedErrorId:MethodNotFound

    只有一项服务可以正常使用

    1. 仅在服务已经运行时重新启动服务
    2. 如何增强此脚本以处理这3个附加项?

      谢谢

1 个答案:

答案 0 :(得分:0)

您可能希望在上面的脚本中添加一个循环,并且您需要

    param
    (
    [string]$File
)
$Computer = Get-Content $file

foreach ($i in $Computer){

$Service = Get-WmiObject -Class Win32_Service -computer $i -filter "name='SERVICENAME'"
$service.change($null,$null,$null,$null,$null,$null,$null,"newpasswordhere")
}

您添加Param以便可以利用这么多次,然后foreach循环将遍历.txt文件中每台计算机的代码。

现在这只回答你问题的第一部分,但应该给你一个很好的起点。