pinkfluffyunicorn
Goto Top

Unter Win10 Alle aktiven nicht Windows Dienste anzeigen lassen und deren Dateiname als variable speichern

Hi, wie kann ich alle nicht von Windows stammenden Dienste und den jeweils dazugehörigen Dateinamen anzeigen lassen und den Dateiname als auslesbare Variable in einem Textdokument speichern? Für jeden dienst ein eigenes Dokument so dass ich die Variablen auslesen und die einzelnen Dienste alle per Batch beenden kann? wäre auch cool wenn mir jemand sagen kann wie ich das komplette Verzeichnis des Dienstes als Admin Löschen kann(falls es ein unerwünschter Dienst ist)

Content-Key: 295513

Url: https://administrator.de/contentid/295513

Printed on: April 24, 2024 at 07:04 o'clock

Mitglied: 126919
126919 Feb 07, 2016 updated at 14:40:24 (UTC)
Goto Top
Cherio,
wie kann ich alle nicht von Windows stammenden Dienste und den jeweils dazugehörigen Dateinamen anzeigen lassen und den Dateiname als auslesbare Variable in einem Textdokument speichern?
Mit Powershell z.B. kein Thema, obwohl das Schreiben in eine Textdatei hier überflüssig ist:
# Alle nicht MS Dienste ermitteln
$non_ms_services = gwmi win32_service | %{Add-Member -InputObject $_ -MemberType NoteProperty -Name "FileItem" -Value ([regex]::match($_.PathName,'(?i)"?(.*?\.exe)').Groups.Value -replace '"','') -PassThru} | ?{(test-path $_.FileItem) -and ((get-item $_.FileItem).VersionInfo.LegalCopyright -notmatch 'Microsoft')}  

# Alle nicht MS Dienste beenden und löschen
$non_ms_services | %{
   $_.StopService()
   $_.Delete()
}
und die einzelnen Dienste alle per Batch beenden kann?
Siehe oben, dir sei aber gesagt das es Dienste gibt die sich aus Sicherheitsgründen nicht beenden lassen, wie z.B. die der Virenscanner & Co.
Damit handelst du dir also eventuelle Probleme ein ..
Und das Verzeichnis eines Dienstes löscht man nicht so einfach, sondern man sollte den Dienst erst vorher regulär deinstallieren (z.B. mit sc delete, oder wie oben mit PS).

fk
VMWare , Silicon Valley
Member: PinkFLuffyUnicorn
PinkFLuffyUnicorn Feb 07, 2016 at 15:47:09 (UTC)
Goto Top
Erstmal danke, logisch kann ich einige dienste nicht beenden; Grafiktreiber oderso sollte man an lassen;D aber den explorer z.B. kann ich zum Zocken ausschalten etc. ^^
Mitglied: 126919
126919 Feb 07, 2016 at 17:36:43 (UTC)
Goto Top
Zitat von @PinkFLuffyUnicorn:
aber den explorer z.B. kann ich zum Zocken ausschalten etc. ^^
Was hat der Explorer mit nicht MS Diensten zu tun ?
Naja, ich seh die nächste Frage hier schon kommen ...
Member: PinkFLuffyUnicorn
PinkFLuffyUnicorn Feb 08, 2016 at 02:24:57 (UTC)
Goto Top
egal, hat sich erledigt^^
Mitglied: 126919
126919 Feb 08, 2016 at 09:45:57 (UTC)
Goto Top
Zitat von @PinkFLuffyUnicorn:

egal, hat sich erledigt^^

How can I mark a post as solved?
Member: PinkFLuffyUnicorn
PinkFLuffyUnicorn Feb 08, 2016 at 15:38:16 (UTC)
Goto Top
der post hier ist noch net erledigt, da ich das Problem habe das das Script nicht mehr geht. ich habe diesen Code"$non_ms_services >> "C:\Users\Chris\Desktop\Taskkill\Ausgabe2.txt"" welcher anfangs die non ms Dienste in der Textdatei ausgegeben hat. da ich das Script auch richtig starten wollte habe ich nun die Powershell auf unrestricted eingestellt. seitdem wird nur noch das Dokument erstellt, leider ohne Inhalt. hab alle 3 Aktivierungstypen durchgetestet und bei keinem geht's. hab die Konsole auch wieder auf restricted gesetzt passieren tut aber immer noch nix in der .txt. wie kann ich das wieder zum laufen bringen?
Mitglied: 126919
Solution 126919 Feb 08, 2016 updated at 16:36:54 (UTC)
Goto Top
der post hier ist noch net erledigt
Dann schreib das doch auch nicht ...

Wieso immer alles in Zwischenschritten in textdateien exportieren ???
Der Inhalt von Variablen und Objekten lässt sich doch in Powershell ohne diese alte Batchmanier ausfiltern.
Dazu gibt es doch das CMDLet where-object oder abgekürzt ?{}.

Wenn du also aus den Nicht MS-Diensten bestimmte herausfiltern willst machst du das folgendermaßen:

die erste Zeile von oben bleibt gleich, dann kommt das hier:
$excluded = @("Dienst1","Dienst2")  
$non_ms_services | ?{$_.Name -notin $excluded}
In dem Array trägst du die Dienste ein welche du nicht haben willst.

Fertig ist die Geschichte.

Dieses Ergebnis kannst ebenfalls wieder in einer Variablen speichern und so wie oben die Dienste beenden. Zusätzlich kannst du die Startart auf Disabled stellen wenn du willst, dann starten sie nicht neu falls es welche sind die sich automatisch versuchen Neu zu starten.

Also nutze die Vorteile von Powershell mit seiner objektorientierten Programmierweise und lass den ### mit dem Export in Textdateien, das ist altmodisch hoch drei, total ineffizient und Fehleranfällig.
Member: PinkFLuffyUnicorn
PinkFLuffyUnicorn Feb 08, 2016 at 16:36:57 (UTC)
Goto Top
in textdateien will ich das eig nur um zu schauen was ich für dienste so habe, damit ich noch raussortieren kann was ich brauch und was nicht, und danke das hab ich gesucght^^
Member: PinkFLuffyUnicorn
PinkFLuffyUnicorn Feb 09, 2016 at 18:38:23 (UTC)
Goto Top
Mir wird ja nun pro dienst ein kleiner block mit einzelnen infos ausgegeben. wie kann ich wenn der string Status : Running vorhanden ist den gesamten block als variable speichern? ja ich frag dumme sachen sry:D
Mitglied: 126919
126919 Feb 10, 2016 updated at 08:35:25 (UTC)
Goto Top
Zitat von @PinkFLuffyUnicorn:

Mir wird ja nun pro dienst ein kleiner block mit einzelnen infos ausgegeben. wie kann ich wenn der string Status : Running vorhanden ist den gesamten block als variable speichern? ja ich frag dumme sachen sry:D
Diese Blöcke wie du sie nennst sind alles "Objekte" auf deren Eigenschaften du per Property zugreifen kannst

Beispiel um alle Objekte(Dienste) welche den Status Running haben in einer Variablen zu speichern:
# ausgeschlossene Dienste
$excluded = @("Dienst1","Dienst2")  
# Dienste Filtern ohne Ausgeschlossene und mit dem Status 'Running' 
$var = $non_ms_services | ?{$_.Name -notin $excluded -and $_.Status -eq 'Running'}  
# Variable ausgeben
$var
Alle Eigenschaften solch eines Objektes(en) kannst du dir mit dem CMDLet Get-Member anzeigen lassen
$var | Get-member
Dann siehst du auch welche Methoden sich mit diesem Objekt oder mehreren Objekten ausführen lassen (Method).

Bedenke immer wenn du mehrere Objekte zurückgeliefert bekommst sind diese in einem Array aus Objekten zusammengefasst.