
Мне нужно имитировать завершение задачи из списка процессов. Я получаю список процессов, отправляю его в текстовый файл 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, разве эта информация не может храниться в переменных?