我必须模拟从进程列表中终止任务。我获取进程列表,将其发送到文本文件 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 提到的,这些信息不能存储在变量中吗?