Eliminar líneas del archivo txt de PowerShell

Eliminar líneas del archivo txt de PowerShell

Tengo que simular la eliminación de una tarea de la lista de procesos. Obtengo la lista de procesos, la envío al archivo de texto Process.txt y luego hago que el usuario ingrese la tarea que desea eliminar. Mi principal problema es que tengo que hacer esto en un bucle. Pero a menos que cambie el archivo de salida a Process2.txt, se eliminará todo el archivo. Entonces, cuando llego a la parte del bucle donde les pido que sigan eliminando el proceso hasta que aborten, terminaré con muchos archivos. ¿Existe alguna forma de mantener el mismo archivo y simplemente eliminar la línea que ingresan?

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
    }

Respuesta1

Si llama recursivamente a esta función, simplemente devuelva su proceso coincidente:

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)

No estoy seguro de por qué se crean Process.txt o Process2.txt para almacenar información. Como mencionó SimonS, ¿no se puede almacenar esta información en variables?

información relacionada