Verfügt jemand über ein Powershell-Skript zum Ändern der von einem Windows-Dienst verwendeten Anmeldeinformationen?
Antworten
Zu viele Anzeigen?In Anbetracht dessen, dass innerhalb dieser Klasse:
$class=[WMICLASS]'\\.\root\Microsoft\SqlServer\ComputerManagement:SqlService'
gibt es eine Methode namens setserviceaccount()
kann dies sein Skript wird tun, was Sie wollen:
# Copyright Buck Woody, 2007
# All scripts provided AS-IS. No functionality is guaranteed in any way.
# Change Service Account name and password using PowerShell and WMI
$class = Get-WmiObject -computername "SQLVM03-QF59YPW" -namespace
root\Microsoft\SqlServer\ComputerManagement -class SqlService
#This remmed out part shows the services - I'll just go after number 6 (SQL
#Server Agent in my case):
# foreach ($classname in $class) {write-host $classname.DisplayName}
# $class[6].DisplayName
stop-service -displayName $class[6].DisplayName
# Note: I recommend you make these parameters, so that you don't store
# passwords. At your own risk here!
$class[6].SetServiceAccount("account", "password")
start-service -displayName $class[6].DisplayName
Um den Kommentar von @alastairs deutlicher zu machen: der 6. Parameter muss $false
代わりに $null
wenn Sie Domänenkonten verwenden:
$service = Get-WMIObject -class Win32_Service -filter 'Service Name'
$service.change($null, $null, $null, $null, $null, $false, "DOMAIN\account", "mypassword")
Ohne dies funktionierte es bei 4/5 der Dienste, die ich zu ändern versuchte, aber einige verweigerten die Änderung (Fehler 21).
$svc = Get-WmiObject win32_service -filter "name='serviceName'"
die Position des Benutzernamens und des Passworts kann sich ändern, also versuchen Sie diese Zeile, um die richtige Stelle zu finden $svc.GetMethodParameters("change")
$svc.change($null,$null,$null,$null,$null,$null,$null,$null,$null,"admin-username","admin-password")
Was ich im Standard-PS-Stack nicht finden kann, finde ich in Carbon
:
http://get-carbon.org/help/Install-Service.html
http://get-carbon.org/help/Carbon_Service.html (nur Carbon 2.0)
Die gegebenen Antworten erfüllen die Aufgabe.
Es gibt jedoch noch ein weiteres wichtiges Detail: Um die Anmeldeinformationen zu ändern und den Dienst erfolgreich zu starten, müssen Sie zunächst diesem Benutzerkonto die Berechtigung zur "Anmeldung als Dienst" erteilen .
Um diese Berechtigung einem Benutzer zu gewähren, verwenden Sie das mitgelieferte Powershell-Skript ici indem Sie einfach den Benutzernamen des Kontos angeben und dann die anderen Befehle ausführen, um die Anmeldeinformationen für einen Dienst zu aktualisieren, wie in den anderen Antworten erwähnt, d. h.,
$svc=gwmi win32_service -filter 'Service Name'
$svc.change($null,$null,$null,$null,$null,$null,'.\username','password',$null,$null,$null)