2014-03-06 68 views
1

我试图将一堆服务器上的本地帐户的属性设置为“密码永不过期”。这是我能弄清楚的最好的。我不断收到:使用powershell修改本地帐户

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} 
} 

谢谢!

回答

2

你的错误是在这一行:

$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() 
} 
+0

这做到了!还在习惯PS。非常感谢!!! –