从 powershell txt 文件中删除行

从 powershell txt 文件中删除行

我必须模拟从进程列表中终止任务。我获取进程列表,将其发送到文本文件 process.txt,然后让用户输入他们想要终止的任务。我的主要问题是,我必须循环执行此操作。但除非我将输出文件更改为 process2.txt,否则整个文件都会被删除。因此,当我进入循环部分,要求他们继续终止进程直到中止时,我最终会得到很多文件。有没有办法保留相同的文件并删除他们输入的行?

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
    }

答案1

如果您递归调用此函数,只需返回匹配的进程:

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)

我不确定为什么要创建 process.txt 或 process2.txt 来存储信息。正如 SimonS 提到的,这些信息不能存储在变量中吗?

相关内容