Вопрос или проблема
Я новичок в Windows PowerShell. Я хочу непрерывно реплицировать информацию о процессах в графическом интерфейсе диспетчера задач в Excel каждые 5 минут. Это возможно?
Вы, вероятно, ищете командлет Get-Process
и Планировщик заданий.
Попробуйте следующее:
Get-Process | Select Handles,NPM,PM,WS,CPU,Id,SI,ProcessName,@{Name="Timestamp"; Expression = ({(Get-Date)})} | Export-Csv -Path C:\Junk\Processes.csv -Append
Если вы сохраните это в файл .ps1, вы сможете вызвать его с помощью запланированной задачи и повторять задачу каждые 5 минут:
Кроме того, вы можете использовать цикл PowerShell и оставить скрипт работающим в окне на столько времени, сколько вам нужно:
do {
Get-Process | Select Handles,NPM,PM,WS,CPU,Id,SI,ProcessName,@{Name="Timestamp"; Expression = ({(Get-Date)})} | Export-Csv -Path C:\Junk\Processes.csv -Append
start-sleep -Seconds 300
} while ($true -eq $true)
(в этом случае – 300 секунд это 5 минут!)
Ответ или решение
Как реплицировать информацию Task Manager в PowerShell и экспортировать в Excel каждые 5 минут
Если вы хотите получить аналогичный вывод менеджера задач в Windows, используя PowerShell, и экспортировать эту информацию в файл Excel (CSV) каждые 5 минут, это вполне возможно. В следующем ответе мы рассмотрим два подхода: использование планировщика задач и запуск бесконечного цикла в PowerShell.
Подход 1: Использование планировщика задач
-
Создайте PowerShell-скрипт
Сначала создайте PowerShell-скрипт, который будет извлекать информацию о процессах. В тексте ниже представлен образец, который выбирает важные сведения о процессах, включая их идентификаторы, использование памяти и процессорного времени, и добавляет временную метку.Get-Process | Select Handles, NPM, PM, WS, CPU, Id, SI, ProcessName, @{Name="Timestamp"; Expression = {(Get-Date)}} | Export-Csv -Path C:\Junk\Processes.csv -Append -NoTypeInformation
Сохраните этот код в файл с расширением
.ps1
, например,GetProcesses.ps1
. -
Настройка планировщика задач
Теперь откройте планировщик задач Windows:- Нажмите Win + R, введите
taskschd.msc
и нажмите Enter. - Нажмите на Создать задачу в правой части окна.
- Вкладка Общие: введите имя задачи, например, "Экспорт процессов PowerShell".
- Вкладка Триггеры: добавьте новый триггер, который сработает каждые 5 минут.
- Вкладка Действия: добавьте действие, выбрав "Запустить программу", и укажите
powershell.exe
в поле программы, а в "Добавить аргументы" укажите-File "C:\путь\к\файлу\GetProcesses.ps1"
.
- Нажмите Win + R, введите
Таким образом, ваш скрипт будет запускаться каждые 5 минут и экспортировать текущее состояние процессов в указанный файл CSV.
Подход 2: Бесконечный цикл в PowerShell
Если вы предпочитаете запустить скрипт вручную и оставить его работающим, вы можете использовать бесконечный цикл.
do {
Get-Process |
Select Handles, NPM, PM, WS, CPU, Id, SI, ProcessName, @{Name="Timestamp"; Expression = {(Get-Date)}} |
Export-Csv -Path C:\Junk\Processes.csv -Append -NoTypeInformation
Start-Sleep -Seconds 300 # Пауза в 300 секунд (5 минут)
} while ($true)
Просто скопируйте и вставьте этот код в окно PowerShell. С помощью этого подхода скрипт будет работать непрерывно, экспортируя данные каждые 5 минут, пока вы не остановите его вручную.
Заключение
Оба метода позволяют извлекать информацию о процессах и экспортировать ее в файл CSV для дальнейшего анализа в Excel. Выбор подхода зависит от ваших предпочтений и требований к автоматизации. Используя планировщик задач, вы получите автоматизированное решение, в то время как бесконечный цикл в PowerShell позволяет вам более гибко управлять процессом.