Лучше (быстрее) сделать один удаленный вызов, чтобы получить все процессы, чем по одному на процесс, поэтому сделайте это и сохраните все результаты - по крайней мере, имена процессов.
Следующая часть нетривиальна. PowerShell и аккуратно отформатированные таблицы работают так, что для каждой строки таблицы создается один объект (все вместе), причем каждый объект имеет свойства для каждого имени столбца.
# Processes to look for
$Process = @("Process1", "Process2", "Process3")
$Node = Read-Host -Prompt 'Input Node name'
# Get running processes, and only keep their names
$runningProcesses = Get-Process -ComputerName $Node -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Name
$Process | ForEach-Object {
# For each process name to look for, generate a hashtable of
# columns and their values,
# then cast it into a PS Object
[PSCustomObject]@{
'ProcessName' = $_
'Status' = if ($runningProcesses -contains $_) { "Running" } else { "Not Running" }
}
}
Это дает аккуратный форматированный вывод таблицы, а также структурированные данные, так что вы можете записать вывод этого в | ForEach-Object { $_.Status }
и выбрать отдельные части по имени, что вы не можете сделать так же аккуратно, используя свой форматированный формат .