Ich versuche, Passwörter auf mehr als 1000 Hosts Windows Server 2008/2012 zu ändern. Sie haben verschiedene Domains zugewiesen, also verbinde ich sie über ihre IP, alle haben PowerShell-Remoting geöffnet. Stuck bei meiner Skript-Implementierung. Im Moment möchte ich nur eine Verbindung zu einem einzelnen Host herstellen und das Passwort des Benutzers oder Administrators ändern.Führen Sie Remote-PS-Befehl ordnungsgemäß
Hier ist der Code, den ich
verwenden$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
Jetzt erhalten die Konsolenausgabe I:
PS C:\> ./script [ADSI]$Admin="WinNT://WIN-TA49U0TR9GT/Administrator" $Admin.SetPassword("Users new password") PS C:\>
"WinNT: // WIN-TA49U0TR9GT/Administrator" gehört zur Remote-Host, meine lokalen Computername und ein Benutzername sind unterschiedlich. Ich bekomme hier keinen Fehler oder eine korrekte Ausgabe. Das Passwort ändert sich nicht. Wenn ich versuche, diese Befehle manuell auf jedem Host auszuführen, funktioniert es.
Irgendwelche Vorschläge? Vielleicht eine funktionierende Lösung?