Suche GUI Programm um Windows Dienste zu managen.

Marco199

Cadet 3rd Year
Registriert
Juli 2024
Beiträge
33
für Win7 or Win10

Ich hatte mal ein Tool das Windows Dienste sichern und restore konnte.
Leider fehlt mir nicht mehr der name ein.
Alternative Tools wären auch in Ordnung.
 
Ach stimmt,
Die Zustände der Dienste wie zb Disabled or Enabled.
 
@Alexander2 da kannst du nicht mehrere auf einmal,speichern oder wiederherstellen die dienste.
das ist sehr umständlich und würde ewig dauern manual zu managen.
 
dann sich mal nach windows dienste per powershell, das geht ziemlich sicher dann per script. also a bissle text schreiben, in serie ausführen lassen, eben was du geschrieben hast ohne weiteres eigenes zutun und feddisch. wenn du viel ändern musst ist bash (linux) oder in Windows powershell mit das beste.
 
@Alexander2 ok der erste schritt wäre alle aktuellen zustände der dienste zu sichern, wie stelle ich das mit powershell an.?
 
Alexander2 schrieb:
dann such mal nach windows dienste per powershell

Edit:
Für mich selbst unter Linux hätte ich da so ne gewisse Anforderung würde ich mir durchaus nen shell script schreiben, je nachdem was meine Anforderung ist und wenn ich das oft brauche auch ne TUI. Wenn ahlt nichts dazu zu finde ist.

Ich habe dir hier aber nur ein paar Hinweise gegeben, was gehen könnte. Abgesehen von nem Beitrag schreiben habe ich aber kein Interesse daran dir nen Script zu schreiben. ich hoffe du Findest noch eas du brauchst. vielleicht kennt ja auch noch wer etwas das deine Anforderungen erfüllt.

Übrigends, mit den Vorgeschalgenen Suchworten war gleich Eintrag 1 direkt von Microsoft so eine Lern Seite mit genau dem Inhalt zu Dienste und Powershell.
 
  • Gefällt mir
Reaktionen: JumpingCat
Einfach den Zustand der Dienste auslesen mit Powershell, in eine Datei schreiben.
 
Regedit?
 
  • Gefällt mir
Reaktionen: tollertyp
Du brauchst nur noch googlen
Powershell read csv
Powershell for each
Powershell set-service
 
Das sagt ChatGPT dazu (dafür ist es echt gut geeignet):

Export
Code:
# Pfad zur Registry für Dienste
$registryPath = "HKLM:\SYSTEM\CurrentControlSet\Services"

# Array zum Speichern der Dienstinformationen
$dienstDaten = @()

# Hole alle Dienst-Unterschlüssel aus der Registry
Get-ChildItem -Path $registryPath | ForEach-Object {
    $dienstName = $_.Name
    $startMode = (Get-ItemProperty -Path $_.PSPath -Name Start).Start
    $status = (Get-Service -Name $dienstName -ErrorAction SilentlyContinue).Status

    # Wandle den Starttyp in verständliche Namen um
    $startModeText = switch ($startMode) {
        0 { "Boot" }
        1 { "System" }
        2 { "Automatic" }
        3 { "Manual" }
        4 { "Disabled" }
        default { "Unbekannt" }
    }

    # Füge die Dienstinformationen zum Array hinzu
    $dienstDaten += [PSCustomObject]@{
        Name      = $dienstName
        StartMode = $startModeText
        Status    = $status
    }
}

# Speichere die Dienstinformationen in einer CSV-Datei
$dienstDaten | Export-Csv -Path "D:\DiensteStatusRegistry.csv" -NoTypeInformation

Import
Code:
# CSV-Datei einlesen
$dienstDaten = Import-Csv -Path "D:\DiensteStatusRegistry.csv"

# Durchlaufe jeden Dienst und stelle den Starttyp und Status wieder her
foreach ($dienst in $dienstDaten) {
    $name = $dienst.Name
    $startModeText = $dienst.StartMode
    $status = $dienst.Status

    # Überprüfen, ob der Dienst existiert
    if (Get-Service -Name $name -ErrorAction SilentlyContinue) {
        try {
            # Starttyp umwandeln
            $startMode = switch ($startModeText) {
                "Boot"      { 0 }
                "System"    { 1 }
                "Automatic" { 2 }
                "Manual"    { 3 }
                "Disabled"  { 4 }
                default     { continue } # Skip unknown types
            }

            # Ändere den Starttyp des Dienstes in der Registry
            $registryPath = "HKLM:\SYSTEM\CurrentControlSet\Services\$name"
            Set-ItemProperty -Path $registryPath -Name Start -Value $startMode

            # Dienststatus wiederherstellen
            if ($status -eq 'Running') {
                Start-Service -Name $name
            } elseif ($status -eq 'Stopped') {
                Stop-Service -Name $name -ErrorAction SilentlyContinue
            }
        } catch {
            Write-Output "Fehler beim Wiederherstellen des Dienstes $name: $_"
        }
    } else {
        Write-Output "Dienst $name existiert nicht"
    }
}

Vorher natürlich ein Backup machen. Script nach eigenen Vorlieben anpassen. Gerade beim Wiederherstellen, ob man wirklich "Start-Service" oder "Stop-Service" aufrufen will, oder es über einen Neustart "regelt".

Edit: Powershell set-service war für ChatGPT evtl zu neu, das wollte sowas machen:
Code:
# Starttyp ändern            
$service = Get-WmiObject -Class Win32_Service -Filter "Name='$name'"            
$service.Change($null, $null, $startmode, $null, $null, $null, $null)
Das hat mir nicht gut gefallen, da habe ich den Weg über die Registry erfragt
 
@tollertyp Export funktioniert, aber Import bekomme ich die fehlermeldung in powershell:

At line:30 char:69
  • ... Write-Output "Fehler beim Wiederherstellen des Dienstes $name: $_"
  • ~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character.
Consider using ${} to delimit the name.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidVariableReferenceWithDrive
 
könnte am Doppelpunkt liegen, mach da evtl mal ${name}: oder vor dem Doppelpunkt noch ein Leerzeichen

Edit: das mit {} steht auch im Fehler als Ratschlag: Consider using ${} to delimit the name.
 
Also die Zeile 34 ändern in
Code:
 Write-Output "Fehler beim Wiederherstellen des Dienstes ${name}: $_"
 
@tollertyp ja das habe ich auch gemacht und spuckt eine andere fehlermeldung aus,
er findet die export datei nicht...

Import-Csv : Could not find file 'C:\DiensteStatusRegistry.csv'.
At line:1 char:16
  • $dienstDaten = Import-Csv -Path "C:\DiensteStatusRegistry.csv"
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Import-Csv], FileNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand
 
Und es gibt eine Datei C:\DiensteStatusRegistry.csv ?

Also bei mir klappt beim ChatGPT-Script nicht mal der Export. Nutzt du für den Export ein anderes Script?

Edit: Doch, klappt sogar, kommen aber massig Fehlermeldungen...
 
Zurück
Oben