Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何在多台服务器上远程更改服务帐户密码_Powershell_Passwords_Wmi_Credentials_Remote Server - Fatal编程技术网

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

Powershell 如何在多台服务器上远程更改服务帐户密码,powershell,passwords,wmi,credentials,remote-server,Powershell,Passwords,Wmi,Credentials,Remote Server,我一直在搜索这里的档案,但还没有找到一个简单的解决我的问题的方法。我正在使用powershell和wmi更改服务帐户的密码。我可以在所有服务器上一次更改一个服务,如下所示: $Service = Get-WmiObject -Class Win32_Service -computer REMOTESERVER -filter "name='SERVICENAME'" $service.change($null,$null,$null,$null,$null,$null,$null,"newpas

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

$Service = Get-WmiObject -Class Win32_Service -computer REMOTESERVER -filter "name='SERVICENAME'"
$service.change($null,$null,$null,$null,$null,$null,$null,"newpasswordhere")
如您所见,我可以引用我想要的任何服务器以及该服务器上的任何服务。我想做的是以下几点

  • 提供服务器列表(包含“REMOTESERVER1、REMOTESERVER2”或类似内容的文本文件)
  • 更改同一台计算机上使用相同凭据运行的多个服务的密码。我可以使用-filter“StartName LIKE“%\MYSERVICEACCOUNT”获取多个服务的列表,但当我尝试运行$service.Change更新密码时,出现了一个错误
  • 方法调用失败,因为[System.Object[]]不包含名为“change”的方法。 第1行字符:16
    +$service.change您可能希望在上述脚本中添加一个循环,并且

        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文件中的每台计算机的代码中运行


    现在,这只回答了问题的第一部分,但应该为您提供一个良好的起点。

    Luke,当我有多台服务器符合条件时(-filter“name like“%service%”)我收到一个错误。我从name='servicename'切换,因为每台服务器可能有两个使用同一帐户的服务。看起来如果我没有进行服务。更改仍将通过每个服务进行。例如,我可以将每个服务写入文本文件,但这种格式似乎不希望同一服务器上的多个服务具有相同的名称同时更改了ir密码然后我误解了您的要求,因此您正在查找在“用户”下运行的所有服务,并且希望更改所有这些服务以更新“用户”的密码?这是我的错。我将其解释为特定的servicename。其他研究表明,我可以通过运行servicename的用户搜索servicename。是的,我想更改在特定用户下运行的任何服务的“登录”选项卡中的密码。我使用的是-filter startname,如“%\\name”或startname,如“name@%”“。这将定位所有服务,但由于每台服务器上有多个服务,因此会出现故障。当我筛选每台服务器上只有1个服务的服务时,脚本成功了。好吧,这更有意义,我会考虑一下,然后再与您联系。”。