Entfernen von Zeilen aus einer Powershell-TXT-Datei

Entfernen von Zeilen aus einer Powershell-TXT-Datei

Ich muss das Beenden einer Aufgabe aus der Prozessliste simulieren. Ich erhalte die Prozessliste, sende sie an die Textdatei process.txt und lasse den Benutzer dann die Aufgabe eingeben, die er beenden möchte. Mein Hauptproblem ist, dass ich dies in einer Schleife tun muss. Aber wenn ich die Ausgabedatei nicht in process2.txt ändere, wird die gesamte Datei gelöscht. Wenn ich also zu dem Schleifenteil komme, in dem ich sie auffordere, den Prozess so lange zu beenden, bis er abbricht, hätte ich am Ende eine Menge Dateien. Gibt es eine Möglichkeit, dieselbe Datei beizubehalten und nur die Zeile zu löschen, die sie eingeben?

function KillTask {
    get-process | out-file "D:\process.txt"
    Get-Content -Path D:\process.txt
    $Killtask = Read-Host -Prompt "What task would you like to kill"
    get-content D:\process.txt | select-string -AllMatches $killtask -  notmatch |         Out-File D:\process2.txt -force
    Get-Content -Path D:\process2.txt
    }

Antwort1

Wenn Sie diese Funktion rekursiv aufrufen, geben Sie einfach den passenden Prozess zurück:

function KillTask {
   get-process | out-file "D:\process.txt"
   $Killtask = Read-Host -Prompt "What task would you like to kill"
   get-content D:\process.txt | select-string -AllMatches $killtask
}

Do {
   $process = KillTask
   # do stuff with the process
} While ($process)

Ich bin mir nicht sicher, warum process.txt oder process2.txt überhaupt zum Speichern von Informationen erstellt werden. Können diese Informationen, wie SimonS erwähnte, nicht in Variablen gespeichert werden?

verwandte Informationen