Stibo 17 Geschrieben 10. April 2018 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 10. April 2018 Melden Teilen 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 { ... $_ ... Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 10. April 2018 Beste Lösung Melden Teilen 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? Zitieren Link zu diesem Kommentar
Stibo 17 Geschrieben 10. April 2018 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. April 2018 Melden Teilen 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.