Stibo 17 Geschrieben 10. April 2018 Melden Geschrieben 10. April 2018 (bearbeitet) Hallo zusammen, ich versuche mich gerade an einem kleinen Skript, das eine definierte Anzahl von Diensten beenden soll, sofern diese laufen, um anschließend den Starttyp zu ändern. So sieht mein Versuch bislang aus: $Services = Get-Service AxInstSV, bthserv, CDPUserSvc, PimIndexMaintenanceSvc, dmwappushservice, MapsBroker, lfsvc, SharedAccess, lltdsvc, wlidsvc, NgcSvc, NgcCtnrSvc, NcbService, PhoneSvc, Spooler, PrintNotify, PcaSvc, QWAVE, RmSvc, SensorDataService, SensrSvc, SensorService, ShellHWDetection, ScDeviceEnum, SSDPSRV, WiaRpc, OneSyncSvc, TabletInputService, upnphost, UserDataSvc, UnistoreSvc, WalletService, Audiosrv, AudioEndpointBuilder, FrameServer, stisvc, wisvc, icssvc, WpnService, WpnUserService, XblAuthManager, XblGameSave ForEach-Object {if ($Services.Status -eq "Running") {Stop-Service $Services}} ForEach-Object { Set-Service $Services -StartupType Disabled} Folgende Fehlermeldungen kriege ich (für jeden Dienst eine Zeile: Zitat PS C:\windows\system32> $Services = Get-Service AxInstSV, bthserv, CDPUserSvc, PimIndexMaintenanceSvc, dmwappushservice, MapsBroker, lfsvc, SharedAccess, lltdsvc, wlidsvc, NgcSvc, NgcCtnrSvc, NcbService, PhoneSvc, Spooler, PrintNotify, PcaSvc, QWAVE, RmSvc, SensorDataService, SensrSvc, SensorService, ShellHWDetection, ScDeviceEnum, SSDPSRV, WiaRpc, OneSyncSvc, TabletInputService, upnphost, UserDataSvc, UnistoreSvc, WalletService, Audiosrv, AudioEndpointBuilder, FrameServer, stisvc, wisvc, icssvc, WpnService, WpnUserService, XblAuthManager, XblGameSave ForEach-Object {if ($Services.Status -eq "Running") {Stop-Service $Services}} ForEach-Object { Set-Service $Services -StartupType Disabled}Set-Service : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Name'. Specified method is not supported. At line:3 char:30 + ForEach-Object { Set-Service $Services -StartupType Disabled} + ~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Set-Service], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.SetServiceCommand Was mache ich falsch, kann mir hier jemand weiterhelfen? bearbeitet 10. April 2018 von Stibo
Dukel 468 Geschrieben 10. April 2018 Melden Geschrieben 10. April 2018 $services ist dein Array und nicht der einzelne Dienst. Entweder foreach($service in $services){ #bzw. ($service in ( Get-Service AxInstSV, ...)) ... $service ... } oder ForEach-Object { ... $_ ...
Beste Lösung BOfH_666 586 Geschrieben 10. April 2018 Beste Lösung Melden Geschrieben 10. April 2018 N' bissl übersichtlicher wär's vielleicht so: $ServiceListe = @( 'AxInstSV', 'bthserv', 'CDPUserSvc', ....... 'WpnUserService', 'XblAuthManager', 'XblGameSave' ) Get-Service -Name $ServiceListe | Where-Object -Property Status -Value Running -EQ | Stop-Service -PassThru | ForEach-Object { Set-Service -Name $_.Name -StartupType Disabled } !! Ich hab die Liste der Dienste mal etwas verkürzt - das Prinzip sollte klar sein, oder?
Stibo 17 Geschrieben 10. April 2018 Autor Melden Geschrieben 10. April 2018 (bearbeitet) vor 1 Stunde schrieb Dukel: $services ist dein Array und nicht der einzelne Dienst. Entweder foreach($service in $services){ #bzw. ($service in ( Get-Service AxInstSV, ...)) ... $service ... } oder ForEach-Object { ... $_ ... Hallo Dukel, mich verwirrt Deine Antwort bzw. ich kann sie nicht umsetzen. Ich meine verstanden zu haben, was Du da sagst, aber auf meinen Fall kriege ich das das nicht transferiert. vor 36 Minuten schrieb BOfH_666: N' bissl übersichtlicher wär's vielleicht so: $ServiceListe = @( 'AxInstSV', 'bthserv', 'CDPUserSvc', ....... 'WpnUserService', 'XblAuthManager', 'XblGameSave' ) Get-Service -Name $ServiceListe | Where-Object -Property Status -Value Running -EQ | Stop-Service -PassThru | ForEach-Object { Set-Service -Name $_.Name -StartupType Disabled } !! Ich hab die Liste der Dienste mal etwas verkürzt - das Prinzip sollte klar sein, oder? Hallo Olaf, danke für Dein Beispiel. Das Prinzip ist - glaube ich - klar. Ich hab's allerdings mal laufen lassen und festgestellt, dass die entsprechenden Dienste zwar beendet werden, der Starttyp aber nicht. [Edit] Gut, es ist in diesem Fall nicht tragisch, dass der Starttyp nicht geändert wird. Würde mich trotzdem interessieren, warum das nicht passiert? bearbeitet 10. April 2018 von Stibo
BOfH_666 586 Geschrieben 10. April 2018 Melden Geschrieben 10. April 2018 vor einer Stunde schrieb Stibo: [Edit] Gut, es ist in diesem Fall nicht tragisch, dass der Starttyp nicht geändert wird. Würde mich trotzdem interessieren, warum das nicht passiert? Das rauszufinden und "zu reparieren" nennt sich dann "Debuggen". Ich würde mal auf fehlende Berechtigungen tippen. Viele Dienste lassen sich mit normalen administrativen Rechten nicht einfach ändern. Ich habe es nochmal getestet - die Syntax ist korrekt und funktioniert. Um herauszufinden, was noch fehlt, kann man bei fast allen cmdlets ein paar der "Common Parameters", wie -Debug oder -Verbose anhängen. Wenn Du Glück hast, erhältst Du zielführende Informationen.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden