【问题标题】:Modifying local accounts with powershell使用 powershell 修改本地帐户
【发布时间】:2014-03-06 19:36:31
【问题描述】:

我正在尝试将一堆服务器上的本地帐户的属性设置为“密码永不过期”。这是我能想到的最好的。我不断得到:

Get-WmiObject : Invalid parameter 
At C:\Users\xxxxxx\AppData\Local\Temp\4f06fa1c-61da-4c65-ac0b-a4167d83d51c.ps1:4 char:14
+ Get-WmiObject <<<<  -class Win32_UserAccount -Filter "name = 'localaccount'" -       ComputerName $server | Set-WmiInstance -Argument @{PasswordExpires = 0}
+ CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

---------这是我正在尝试的------------

$servers = Get-Item c:\list.txt
foreach ($server in $servers)
{
    Get-WmiObject -class Win32_UserAccount -Filter "name = 'localaccount'" -ComputerName $server | Set-WmiInstance -Argument @{PasswordExpires = 0}
}

谢谢!

【问题讨论】:

    标签: windows powershell wmi


    【解决方案1】:

    你的错误在这一行:

    $servers = Get-Item c:\list.txt
    

    Get-Item cmdlet 返回一个FileInfo 对象,而不是文件的内容。要将内容读入变量,您需要 Get-Content cmdlet。

    这应该可行:

    Get-Content 'c:\list.txt' | % {
      gwmi Win32_UserAccount -Computer $_ -Filter "name='localaccount'" |
         Set-WmiInstance -Argument @{PasswordExpires = $false}
    }
    

    您也可以像这样 (source) 进行属性更改:

    Get-Content 'c:\list.txt' | % {
      $account = gwmi Win32_UserAccount -Computer $_ -Filter "name='localaccount'"
      $account.PasswordExpires = $false
      $account.Put()
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多