Jump to content

Beenden von Diensten und deren Starttyp


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Stibo
Link zu diesem Kommentar
  • Beste Lösung

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?  ;-) 

Link zu diesem Kommentar
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 von Stibo
Link zu diesem Kommentar
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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...