我试图在运行Windows Server 2008/2012的超过1000台主机上更改密码。他们分配到不同的域,所以我通过他们的IP连接到他们,他们所有的PowerShell远程打开。 卡住我的脚本实现。现在我只想连接到单个主机并更改用户或管理员的密码。正确执行远程PS命令
这里是我的代码使用
$username = "UserWhose Password I want to change"
$password = ConvertTo-SecureString "users old password" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password
$serverNameOrIp = "host ip address here"
$s = New-PSSession -ComputerName $serverNameOrIp -Authentication default -Credential $cred
#invoke the scriptblock remotely
$sb = {
"[ADSI]`$Admin=`"WinNT://$env:COMPUTERNAME/$env:USERNAME`""
"`$Admin.SetPassword(`"Users new password`")"
}
Invoke-Command -Session $s -ScriptBlock $sb
Remove-PSSession $s
现在,控制台输出我得到:
PS C:\> ./script [ADSI]$Admin="WinNT://WIN-TA49U0TR9GT/Administrator" $Admin.SetPassword("Users new password") PS C:\>
“WINNT:// WIN-TA49U0TR9GT /管理员” 属于远程主机,我的地方计算机名和用户名是不同的。 我没有收到任何错误或正确的输出。密码不变。如果我尝试在任何主机上手动运行这些命令 - 它的工作原理。
有什么建议吗?也许工作的解决方案?