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

标签 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,"newpasswordhere")

如您所见,我可以引用所需的任何服务器以及该服务器上的任何服务。我想做的是以下
  • 提供服务器列表(带有“REMOTESERVER1,REMOTESERVER2”的文本文件或类似的
  • 更改在同一计算机上以相同凭据运行的多个服务的密码。我可以使用-filter“StartName LIKE'%\ MYSERVICEACCOUNT'”获得多个服务的列表,但是当我随后尝试运行$ service.change更新密码时,出现错误

  • Method invocation failed because [System.Object[]] doesn't contain a method named 'change'. At line:1 char:16 + $service.change <<<< ($null,$null,$null,$null,$null,$null,$null,"newpasswordhere") + CategoryInfo : InvalidOperation: (change:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound



    虽然只有一项服务,但效果很好
  • 仅在服务已经在运行时才重新启动

  • 如何增强此脚本以处理这3个附加项目?

    谢谢

    最佳答案

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

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

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

    关于powershell - 如何在多个服务器上远程更改服务帐户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240610/

    相关文章:

    powershell - 在PowerShell中检查字符串是否包含数组中的任何子字符串

    git - 无法从 git 更改用户名和密码

    Powershell 无法从标准输入运行多行命令?

    powershell - Invoke-WebRequest - 属性显示为具有值,但以某种方式访问​​时为空

    PowerShell Hashtable 显示第一个键

    database - 在数据库中存储密码的最佳方式

    mysql - MAMP Pro 出错

    c# - WMI 获取所有监视器不返回所有监视器

    wmi - 通过 WMI 启用 UWF

    vbscript - 解释VBScript WMI query/impersonationLevel等