Как получить использование процессора и памяти, потребляемых конкретным процессом в сценарии powershell

Я хочу найти производительность одного процесса, как пример "SqlServer"

какие команды я должен написать, чтобы узнать 2 вещи:

  1. RAM используется SqlServer
  2. CPU, используемый SqlServer

Я нашел много решений, перечисляющих все процессы, но я хочу получить только 1, т. е. SqlServer.

2 ответов


команда для получения информации о процессе SQL server:

Get-Process SQLSERVR

команда для получения информации для любого процесса, который начинается с S:

Get-Process S*

чтобы получить объем виртуальной памяти, которую использует процесс SQLServer:

Get-Process SQLSERVR | Select-Object VM

получить размер рабочего набора процесса, в килобайтах:

Get-Process SQLSERVR | Select-Object WS 

чтобы получить объем подкачки памяти, которую использует процесс, в килобайтах:

Get-Process SQLSERVR - Select-Object PM

чтобы получить сумму памяти, которую использует процесс, в килобайтах:

Get-Process SQLSERVR - Select-Object NPM

чтобы получить CPU (количество процессорного времени, которое процесс использовал на всех процессорах, в секундах):

Get-process SQLSERVR | Select-Object CPU

чтобы лучше понять командлет Get-Process, ознакомьтесь с документацией на technet здесь.


о CPU я получил это работает следующим образом:

# To get the PID of the process (this will give you the first occurrance if multiple matches)
$proc_pid = (get-process "slack").Id[0]

# To match the CPU usage to for example Process Explorer you need to divide by the number of cores
$cpu_cores = (Get-WMIObject Win32_ComputerSystem).NumberOfLogicalProcessors

# This is to find the exact counter path, as you might have multiple processes with the same name
$proc_path = ((Get-Counter "\Process(*)\ID Process").CounterSamples | ? {$_.RawValue -eq $proc_pid}).Path

# We now get the CPU percentage
$prod_percentage_cpu = [Math]::Round(((Get-Counter ($proc_path -replace "\id process$","\% Processor Time")).CounterSamples.CookedValue) / $cpu_cores)