다음을 통해 공유


Get-Process

로컬 컴퓨터 또는 원격 컴퓨터에서 실행 중인 프로세스를 가져옵니다.

구문

Get-Process
   [[-Name] <String[]>]
   [-ComputerName <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   [[-Name] <String[]>]
   [-IncludeUserName]
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   [-IncludeUserName]
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   [-ComputerName <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   [-IncludeUserName]
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   [-ComputerName <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]

Description

cmdlet은 Get-Process 로컬 또는 원격 컴퓨터에서 프로세스를 가져옵니다.

매개 변수가 없으면 이 cmdlet은 로컬 컴퓨터의 모든 프로세스를 가져옵니다. 프로세스 이름 또는 프로세스 ID(PID)로 특정 프로세스를 지정하거나 파이프라인을 통해 프로세스 개체를 이 cmdlet에 전달할 수도 있습니다.

기본적으로 이 cmdlet은 프로세스에 대한 자세한 정보를 포함하는 프로세스 개체를 반환하고 프로세스를 시작하고 중지할 수 있는 메서드를 지원합니다. cmdlet의 Get-Process 매개 변수를 사용하여 프로세스에서 실행되는 프로그램에 대한 파일 버전 정보를 가져와서 프로세스가 로드된 모듈을 가져올 수도 있습니다.

예제

예제 1: 로컬 컴퓨터의 모든 활성 프로세스 목록 가져오기

Get-Process

이 명령은 로컬 컴퓨터에서 실행 중인 모든 활성 프로세스의 목록을 가져옵니다. 각 열에 대한 정의는 Notes 섹션을 참조하세요.

예제 2: 하나 이상의 프로세스에 대해 사용 가능한 모든 데이터 가져오기

Get-Process winword, explorer | Format-List *

이 명령은 컴퓨터의 Winword 및 Explorer 프로세스에 대해 사용 가능한 모든 데이터를 가져옵니다. Name 매개 변수를 사용하여 프로세스를 지정하지만 선택적 매개 변수 이름은 생략합니다. 파이프라인 연산자(|)는 데이터를 cmdlet에 Format-List 전달하여 Winword 및 Explorer 프로세스 개체의 사용 가능한 모든 속성(*)을 표시합니다.

프로세스 ID로 프로세스를 식별할 수도 있습니다. 예: Get-Process -Id 664, 2060

예제 3: 작업 집합이 지정된 크기보다 큰 모든 프로세스 가져오기

Get-Process | Where-Object {$_.WorkingSet -gt 20000000}

이 명령은 작업 집합이 20MB보다 큰 모든 프로세스를 가져옵니다. cmdlet을 Get-Process 사용하여 실행 중인 모든 프로세스를 가져옵니다. 파이프라인 연산자(|)는 프로세스 개체를 cmdlet에 Where-Object 전달합니다. 이 cmdlet은 WorkingSet 속성에 대해 값이 20,000,000바이트보다 큰 개체만 선택합니다.

WorkingSet 은 프로세스 개체의 여러 속성 중 하나입니다. 모든 속성을 보려면 .를 입력합니다 Get-Process | Get-Member. 모든 수량 속성 값은 기본 표시에 킬로바이트 및 메가바이트 단위로 나열되더라도 기본적으로 바이트 단위입니다.

예제 4: 우선 순위에 따라 그룹에 컴퓨터의 프로세스 나열

$A = Get-Process
$A | Get-Process | Format-Table -View priority

이 명령은 우선 순위 클래스에 따라 컴퓨터의 프로세스를 그룹으로 나열합니다. 첫 번째 명령은 컴퓨터의 모든 프로세스를 가져오고 변수에 $A 저장합니다.

두 번째 명령은 변수에 $A 저장된 Process 개체를 cmdlet으로 Get-Process 파이프한 다음Format-Table, 우선 순위 보기를 사용하여 프로세스의 형식을 지정하는 cmdlet으로 파이프합니다.

우선 순위 보기 및 기타 보기는 PowerShell 홈 디렉터리($pshome)의 PS1XML 형식 파일에 정의됩니다.

예제 5: 표준 Get-Process 출력 디스플레이에 속성 추가

Get-Process powershell | Format-Table `
    @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
    @{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
    @{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
    @{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
    @{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
    Id, ProcessName, StartTime -AutoSize

NPM(K)  PM(K) WS(K)   VM(M)  CPU(s)    Id ProcessName StartTime
------  ----- -----   -----  ------    -- ----------- ---------
   143 239540 259384 2366162 22.73  12720 powershell  12/5/2022 3:21:51 PM
   114  61776 104588 2366127 11.45  18336 powershell  12/5/2022 7:30:53 AM
   156  77924  82060 2366185 10.47  18812 powershell  12/5/2022 7:30:52 AM
    85  48216 115192 2366074 1.14   24428 powershell  12/8/2022 9:14:15 AM

이 예제에서는 로컬 컴퓨터에서 프로세스를 검색합니다. 검색된 프로세스는 표준 Get-Process 출력 디스플레이에 Format-Table StartTime 속성을 추가하는 명령에 파이프됩니다.

예제 6: 프로세스에 대한 버전 정보 가져오기

Get-Process powershell -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.6713.1       6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

이 명령은 FileVersionInfo 매개 변수를 사용하여 PowerShell 프로세스의 powershell.exe 기본 모듈인 파일에 대한 버전 정보를 가져옵니다.

Windows Vista 이상 버전의 Windows에서 소유하지 않은 프로세스로 이 명령을 실행하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 열어야 합니다.

예제 7: 지정된 프로세스로 로드된 모듈 가져오기

Get-Process SQL* -Module

이 명령은 Module 매개 변수를 사용하여 프로세스에 의해 로드된 모듈을 가져옵니다. 이 명령은 이름이 .로 시작하는 프로세스에 대한 모듈을 SQL가져옵니다.

소유하지 않은 프로세스를 사용하여 Windows Vista 이상 버전의 Windows에서 이 명령을 실행하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 시작해야 합니다.

예제 8: 프로세스의 소유자 찾기

Get-Process pwsh -IncludeUserName

Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     powershell

$p = Get-WmiObject Win32_Process -Filter "name='powershell.exe'"
$p.GetOwner()

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Domain           : DOMAIN01
ReturnValue      : 0
User             : user01

첫 번째 명령은 프로세스의 소유자를 찾는 방법을 보여줍니다. IncludeUserName 매개 변수에는 관리자 권한(관리자 권한으로 실행)이 필요합니다. 출력에 소유자가 있는 것으로 Domain01\user01표시됩니다.

두 번째 및 세 번째 명령은 프로세스의 소유자를 찾는 또 다른 방법입니다.

두 번째 명령은 PowerShell 프로세스를 가져오는 데 사용합니다 Get-WmiObject . 변수에 $p 저장합니다.

세 번째 명령은 GetOwner 메서드를 사용하여 프로세스의 소유자를 가져옵니다$p. 출력에 소유자가 있는 것으로 Domain01\user01표시됩니다.

예제 9: 자동 변수를 사용하여 현재 세션을 호스팅하는 프로세스를 식별합니다.

Get-Process powershell

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
308      26        52308      61780   567     3.18   5632 powershell
377      26        62676      63384   575     3.88   5888 powershell

Get-Process -Id $PID

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
396      26        56488      57236   575     3.90   5888 powershell

이러한 명령은 자동 변수를 $PID 사용하여 현재 PowerShell 세션을 호스팅하는 프로세스를 식별하는 방법을 보여 줍니다. 이 메서드를 사용하여 중지하거나 닫을 수 있는 다른 PowerShell 프로세스와 호스트 프로세스를 구분할 수 있습니다.

첫 번째 명령은 현재 세션의 모든 PowerShell 프로세스를 가져옵니다.

두 번째 명령은 현재 세션을 호스팅하는 PowerShell 프로세스를 가져옵니다.

예제 10: 주 창 제목이 있는 모든 프로세스를 가져와 테이블에 표시

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize

이 명령은 주 창 제목이 있는 모든 프로세스를 가져오고 프로세스 ID와 프로세스 이름을 가진 테이블에 표시합니다.

mainWindowTitle 속성은 반환하는 Get-Process Process 개체의 많은 유용한 속성 중 하나일 뿐입니다. 모든 속성을 보려면 명령 결과를 Get-Process cmdletGet-Process | Get-Member으로 Get-Member 파이프합니다.

매개 변수

-ComputerName

이 cmdlet이 활성 프로세스를 가져오는 컴퓨터를 지정합니다. 기본값은 로컬 컴퓨터입니다.

하나 이상의 컴퓨터의 NetBIOS 이름, IP 주소 또는 FQDN(정규화된 도메인 이름)을 입력합니다. 로컬 컴퓨터를 지정하려면 컴퓨터 이름, 점(.) 또는 localhost.를 입력합니다.

이 매개 변수는 Windows PowerShell 원격을 사용하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 이 cmdlet의 ComputerName 매개 변수를 사용할 수 있습니다.

형식:String[]
별칭:Cn
Position:Named
Default value:Local computer
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-FileVersionInfo

이 cmdlet은 프로세스에서 실행되는 프로그램에 대한 파일 버전 정보를 가져옵니다.

Windows Vista 이상 버전의 Windows에서는 소유하지 않은 프로세스에서 이 매개 변수를 사용하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 열어야 합니다.

동일한 명령에서 cmdlet의 Get-Process FileVersionInfoComputerName 매개 변수를 사용할 수 없습니다.

원격 컴퓨터의 프로세스에 대한 파일 버전 정보를 얻으려면 cmdlet을 Invoke-Command 사용합니다.

이 매개 변수를 사용하는 것은 각 프로세스 개체의 MainModule.FileVersionInfo 속성을 가져오는 것과 같습니다. 이 매개 변수 Get-Process 를 사용하는 경우 프로세스 개체가 아닌 FileVersionInfo 개체 System.Diagnostics.FileVersionInfo를 반환합니다. 따라서 명령의 출력을 프로세스 개체를 예상하는 cmdlet(예: Stop-Process)으로 파이프할 수 없습니다.

형식:SwitchParameter
별칭:FV, FVI
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Id

PID(프로세스 ID)로 프로세스를 하나 이상 지정합니다. 여러 ID를 지정하려면 쉼표로 ID를 구분합니다. 프로세스의 PID를 찾으려면 .를 입력합니다 Get-Process.

형식:Int32[]
별칭:PID
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-IncludeUserName

Process 개체의 UserName 값이 명령의 결과와 함께 반환됨을 나타냅니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

프로세스 개체를 하나 이상 지정합니다. 개체를 포함하는 변수를 입력하거나 개체를 가져오는 명령 또는 식을 입력하세요.

형식:Process[]
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-Module

이 cmdlet은 프로세스에 의해 로드된 모듈을 가져옵니다.

Windows Vista 이상 버전의 Windows에서는 소유하지 않은 프로세스에서 이 매개 변수를 사용하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 열어야 합니다.

원격 컴퓨터의 프로세스에 의해 로드된 모듈을 얻으려면 cmdlet을 Invoke-Command 사용합니다.

이 매개 변수는 각 프로세스 개체의 Modules 속성을 가져오는 것과 같습니다. 이 매개 변수를 사용하는 경우 이 cmdlet은 프로세스 개체가 아닌 ProcessModule 개체 System.Diagnostics.ProcessModule을 반환합니다. 따라서 명령의 출력을 프로세스 개체를 예상하는 cmdlet(예: Stop-Process)으로 파이프할 수 없습니다.

동일한 명령에서 ModuleFileVersionInfo 매개 변수를 모두 사용하는 경우 이 cmdlet은 모든 모듈의 파일 버전에 대한 정보가 포함된 FileVersionInfo 개체를 반환합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Name

프로세스 이름으로 하나 이상의 프로세스를 지정합니다. 여러 프로세스 이름(쉼표로 구분)을 입력하고 와일드카드 문자를 사용할 수 있습니다. 매개 변수 이름(Name)은 선택 사항입니다.

형식:String[]
별칭:ProcessName
Position:0
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:True

입력

Process

프로세스 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

Process

기본적으로 이 cmdlet은 System.Diagnostics.Process 개체를 반환합니다.

FileVersionInfo

FileVersionInfo 매개 변수를 사용하는 경우 이 cmdlet은 FileVersionInfo 개체를 반환합니다.

ProcessModule

FileVersionInfo 매개 변수 없이 Module 매개 변수를 사용하는 경우 이 cmdlet은 ProcessModule 개체를 반환합니다.

참고

Windows PowerShell에는 다음 별칭이 포함됩니다.Get-Process

  • gps
  • ps

64비트 버전의 Windows를 실행하는 컴퓨터에서 64비트 버전의 PowerShell은 64비트 프로세스 모듈만 가져오고 PowerShell의 32비트 버전은 32비트 프로세스 모듈만 가져옵니다.

원격 컴퓨터에서 프로세스 정보를 얻으려면 cmdlet을 Invoke-Command 사용합니다. 자세한 내용은 Invoke-Command를 참조 하세요.

PowerShell에서 WMI(Windows Management Instrumentation) Win32_Process 개체의 속성과 메서드를 사용할 수 있습니다. 자세한 내용은 Win32_Process 참조하세요.

프로세스의 기본 표시는 다음 열을 포함하는 테이블입니다. 프로세스 개체의 모든 속성에 대한 설명은 프로세스 속성을 참조 하세요.

  • 핸들: 프로세스가 열린 핸들 수입니다.
  • NPM(K): 프로세스가 사용 중인 페이징되지 않은 메모리의 양(킬로바이트)입니다.
  • PM(K): 프로세스에서 사용 중인 페이징 가능한 메모리 양(킬로바이트)입니다.
  • WS(K): 프로세스의 작업 집합 크기(킬로바이트)입니다. 작업 집합은 프로세스에서 최근에 참조한 메모리 페이지로 구성됩니다.
  • VM(M): 프로세스에서 사용하는 가상 메모리의 양(MB)입니다. 가상 메모리에는 디스크 페이징 파일의 스토리지가 포함됩니다.
  • CPU: 프로세스가 모든 프로세서에서 사용한 프로세서 시간(초)입니다.
  • ID: 프로세스의 PID(프로세스 ID)입니다.
  • ProcessName: 프로세스의 이름입니다. 프로세스와 관련된 개념에 대한 설명은 도움말 및 지원 센터의 용어집 및 작업 관리자 도움말을 참조하세요.

StartTime 및 Priority같이 사용 가능한 Format-Table프로세스의 기본 제공 대체 보기를 사용할 수도 있으며 고유한 보기를 디자인할 수 있습니다.