PowerShell에서 실행 중인 프로세스 목록을 가져오는 방법

이 기사에서는 PowerShell을 이용한 프로세스 모니터링에 대해 다루며, Get-Process
cmdlet에 중점을 둡니다. Get-Process
cmdlet은 프로세스 관리에서 필수적인 도구로, Windows 머신에서 실행 중인 프로세스에 대한 종합적인 뷰를 제공하며, 프로세스 ID, 이름, 메모리 사용량, CPU 소비와 같은 중요한 정보를 표시합니다.
이 기사는 cmdlet의 구문 및 매개변수를 체계적으로 설명하여, 일반적인 프로세스 문의와 특정 프로세스 문의 모두를 다룹니다.
PowerShell에서 Get-Process
Cmdlet을 사용하여 실행 중인 프로세스 목록 표시하기
PowerShell 환경에서는 200개 이상의 cmdlet을 사용할 수 있습니다. 각 cmdlet은 특정 기능을 수행하는 역할을 합니다.
Get-Process
는 Windows 머신에서 실행 중인 프로세스 목록을 검색하는 데 도움이 되는 자주 사용되는 cmdlet 중 하나입니다.
이 cmdlet은 각 프로세스와 관련된 유용한 정보인 프로세스 ID, 이름, 메모리 사용량 등을 제공합니다. 또한 시스템에서 실행 중인 프로세스의 스냅샷을 표시합니다.
구문:
Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
매개변수:
ProcessName string[
]: 검색할 프로세스 이름의 배열을 지정합니다. 이 매개변수는 패턴 일치를 위한 와일드카드 문자를 허용합니다. 이 매개변수를 생략하면Get-Process
는 모든 프로세스를 검색합니다.ProcessId Int32[]
: 검색할 프로세스의 프로세스 ID를 지정합니다. 이 매개변수는 특정 프로세스를 직접 지정할 수 있게 해줍니다.InputObject Process[]
: 프로세스 객체의 배열을 지정합니다. 이 매개변수는 프로세스 객체를Get-Process
에 파이프할 수 있게 해줍니다.NameOfTheComputer string[]
: 명령을 실행할 컴퓨터의 이름을 지정합니다. 이 매개변수를 생략하면Get-Process
는 로컬 컴퓨터에서 프로세스를 검색합니다.FileVersionInfo
: 프로세스 객체에 파일 버전 정보를 추가합니다. 이는 프로세스의 실행 파일에 대한 세부 정보(예: 버전, 제품 이름 등)를 원할 때 유용합니다.Module
: 각 프로세스에 의해 로드된 모듈(DLL 및 실행 파일)을 포함합니다. 이는 프로세스에 의해 로드된 DLL을 확인하는 것과 같은 더 자세한 분석에 도움이 됩니다.[CommonParameters]
: 모든 cmdlet이 지원하는 매개변수로,-Verbose
,-Debug
,-ErrorAction
,-ErrorVariable
,-OutVariable
,-OutBuffer
,-PipelineVariable
등이 있습니다.
매개변수는 Get-Process
cmdlet에 대해 선택적이며, 필요에 따라 사용할 수 있습니다.
모든 실행 중인 프로세스 표시
매개변수 없이 Get-Process
명령을 직접 사용할 수 있습니다. 이 명령은 해당 시간에 실행 중인 모든 프로세스를 표시해야 합니다.
또한 Get-Process
명령 대신 gps
별칭을 사용할 수 있습니다.
Get-Process
gps
출력:
Get-Process
또는 gps
를 실행하면 PowerShell은 시스템 전체 쿼리를 시작하여 모든 활성 프로세스에 대한 정보를 수집합니다. 이 명령에서 매개변수가 없다는 것은 PowerShell에게 필터를 적용하지 않고 모든 프로세스의 세부 정보를 검색하라는 신호입니다.
PowerShell은 각 실행 중인 프로세스에 대한 상세 데이터를 수집합니다. 이 데이터에는 이러한 프로세스의 상태와 특성을 설명하는 다양한 속성이 포함됩니다.
PowerShell은 이를 표시하기 위해 테이블 형식으로 포맷합니다. 이 표 형식은 정보를 명확하고 읽기 쉽게 제시하기 위해 설계되었습니다.
표에는 일반적으로 여러 주요 열이 포함됩니다:
Id
: 이 열은 각 프로세스에 할당된 고유한 숫자 레이블인 프로세스 식별자(PID
)를 보여줍니다.PID
는 특정 프로세스를 고유하게 식별하고 관리하는 데 매우 중요합니다.ProcessName
: 이는 프로세스를 시작한 실행 파일의 이름입니다. 이는 잘 알려진 애플리케이션의 경우 프로세스를 쉽게 인식하는 데 도움을 줍니다.CPU(s)
: 여기에서는 프로세스가 소모한 CPU 시간의 양을 볼 수 있습니다. 이는 초로 측정되며, 시스템 성능에 영향을 미칠 수 있는 중요한 CPU 리소스를 사용하는 프로세스를 평가하는 데 중요합니다.PM(K)
: 이는 킬로바이트로 된 페이지된 메모리를 나타냅니다. 이는 디스크로 페이지될 수 있는 프로세스가 사용하는 메모리의 크기를 나타냅니다. 이 메트릭은 성능 조정과 리소스 관리에 매우 중요합니다.
특정 프로세스에 대한 정보 검색
PowerShell을 사용하여 특정 프로세스에 대한 정보를 검색할 때 몇 가지 구문 옵션이 있습니다. Get-Process -Name processName
과 Get-Process processName
두 가지 모두 유효하며 동일한 결과를 얻지만, 구문 구조에서 약간의 차이가 있습니다.
Get-Process -Name typora
또는
Get-Process typora
Get-Process -Name typora
또는 Get-Process typora
를 실행하면 PowerShell은 실행 중인 프로세스를 필터링하고 typora
라는 이름을 가진 프로세스에 대한 정보를 반환합니다. 이는 우리가 관심 있는 프로세스의 정확한 이름을 알 때 특히 유용합니다.
PowerShell 내부에서는 모든 프로세스 목록을 살펴보고 프로세스 이름과 typora
를 일치시킵니다. 프로세스가 실행 중인 경우 그 세부 정보가 표시됩니다.
출력:
여러 프로세스에 대한 정보 검색
PowerShell에서 여러 프로세스에 대한 정보를 검색하기 위해 Get-Process
cmdlet을 사용할 때, Get-Process NotePad, Outlook
와 같은 명령어를 사용함으로써 PowerShell의 여러 항목을 동시에 처리할 수 있는 기능을 활용하고 있습니다.
Get-Process NotePad, Outlook
Get-Process NotePad, Outlook
를 실행함으로써 PowerShell은 여러 프로세스에 대한 세부 정보, 즉 NotePad
와 Outlook
의 세부 정보를 동시에 가져오도록 지시합니다. 이 명령은 여러 특정 프로세스를 모니터링할 때 유용합니다.
PowerShell은 단일 프로세스 명령과 유사한 작업을 실행하지만 각 지정된 프로세스 이름에 대해 모든 일치를 표시합니다.
출력:
또한, 프로세스 이름에 와일드 카드를 사용할 수도 있습니다.
주어진 속성으로 프로세스 객체 검색
필요할 때 특정 속성에 대한 프로세스 객체 정보를 표시할 수 있습니다. NotePad
프로세스에 대한 Process ID
만 검색해 보겠습니다.
(Get-Process NotePad).Id
명령어 (Get-Process NotePad).Id
에서, 먼저 NotePad
에 대한 프로세스 객체를 가져온 후 그 Id
속성에 접근합니다. 이 기술은 프로세스에 대한 특정 정보, 즉 Process ID
와 같은 정보만 필요할 때 유용합니다.
출력:
또한, 다음과 같이 NotePad
프로세스의 CPU 시간 속성을 검색할 수도 있습니다.
(Get-Process NotePad).CPU
비슷하게, (Get-Process NotePad).CPU
는 NotePad
프로세스의 CPU 사용 정보 검색합니다. 이러한 명령은 프로세스 객체에서 특정 데이터 포인트를 추출하는 방법을 보여줍니다.
출력:
프로세스 소유자 표시
Get-Process
명령의 기본 출력에는 ProcessOwner
속성이 표시되지 않습니다. 그러나 주어진 프로세스를 종료해야 할 때 이 정보는 유용할 수 있습니다.
-IncludeUserName
매개변수를 사용하여 출력에 ProcessOwner
속성을 포함할 수 있습니다.
Get-Process -Name notepad -IncludeUserName
Get-Process -Name notepad -IncludeUserName
명령은 기본적으로 Get-Process
의 동작을 확장하여 프로세스 소유자의 사용자 이름을 출력에 포함시킵니다. -IncludeUserName
매개변수는 특정 프로세스를 실행하는 사용자를 식별할 필요가 있을 때 필수적이며, 이는 다중 사용자 환경이나 문제 해결 시 매우 중요할 수 있습니다.
이 명령은 프로세스의 소유권과 관련하여 프로세스를 더욱 잘 볼 수 있게 해줍니다.
출력:
결론
이 포괄적인 가이드는 시스템 프로세스를 관리하고 모니터링하는 데 있어 PowerShell의 강력함과 다재다능성을 밝혀주었습니다. 우리는 Get-Process
cmdlet의 실용적인 응용 프로그램을 살펴보았으며, 모든 실행 중인 프로세스를 나열하는 것부터 특정 프로세스를 정확하게 지목하고 특정 프로세스 속성을 추출하는 데까지 여정을 떠났습니다.
이 기사는 또한 여러 프로세스를 동시에 처리하는 PowerShell의 기량과 프로세스 소유권과 같은 사용자 중심 정보를 통합하는 쉬운 방법을 보여주었습니다.
Get-Process
cmdlet의 통합은 PowerShell의 프로세스 관리 분야에서의 강력하고 적응력을 강조하며, 시스템 관리자가 Windows 환경 내에서 프로세스를 효과적으로 모니터링하고 분석하며 관리할 수 있는 도구의 스펙트럼을 제공합니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.