오브젝트에 관한 내용을 모른다면 이해하기 어렵다.
이전 포스트를 보고 오는 것을 추천한다.
2024.03.01 - [programming ⌨/파워쉘 PowerShell] - 나를 위한 PowerShell(6) : Object 다루기
이번 포스팅에서는 WMI(Windows Management Instrumentation)에 대해 알아볼것이다
WMI는 Windows 기반 OS에서의 데이터 관리 및 작업을 위한 인프라다.
Windows의 거의 모든 설정을 접근할 수 있으며, 원격 서버 관리에 중요한 인터페이스 중 하나이기도 하다
WMI는 VB스크립트나 윈도우 파워셸과 같은 스크립트 언어들이 Windows 개인용 컴퓨터와 서버들을 로컬/원격으로 관리할 수 있게 해준다.
WMI와 CIM
로컬/원격 컴퓨터에 설치된 소프트웨어 목록을 보는 모습이다.
Get-WmiObject win32_product -ComputerName <???> | Select-Object Name, InstallDate
Get-CimInstance win32_product -ComputerName <???> | Select-Object Name, InstallDate
CIMOM(CIM Object Manager)에 관해서는 다음 기회에 자세히 다뤄 보도록 하자
지금은 Get-WmiObject와 Get-CIMInstance는 동일하다고 생각하면 된다.
Win32_OperatingSystem
가장 널리 사용되는 wmi 쿼리는 win32_operatingsystem과 관련있다.
win32_operatingsystem 클래스는 컴퓨터에 설치된 Windows 기반 운영 체제를 나타낸다
Get-CimInstance win32_operatingsystem
다양한 OS관련 속성들이 존재하는데, 아래 Img4와 같이 사용 가능하다.
뿐만 아니라 Reboot, Shutdon, SetDateTime과 같은 메서드또한 존재한다.
Win32_UserAccount
다른 유용한 wmi instance는 win32_useraccount이다.
이름에서 알 수 있듯이 사용자 계정에 대한 정보가 포함되어 있다.
Get-CimInstance win32_useraccount
Where-Object를 통해 특정 계정의 정보를 확인할 수 있으며 해당 명령은 다음 포스팅에서 다룰 예정이다.
사용자 계정 이름을 변경하는 Rename 매서드를 포함하고 있다.
Win32_PhysicalMemory
Everest tool을 이용해 본적이 있는가? PC 하드웨어 정보를 분석하는 프로그램이다.
하지만, win32_physicalmemory를 사용한다면 더이상 필요가 없다
Get-WmiObject win32_physicalmemory | Format-Table Manufacturer, Banklabel, Configuredclockspeed, Devicelocator, Capacity, Serialnumber -autosize
운영 체제에서 사용할 수 있는 실제 메모리 디바이스를 나타낸다.
메모리 교체와 같은 상황에서 써먹을 수 있겠다
Win32_ComputerSystem
win32_computersystem은 windows를 실행하는 컴퓨터 시스템을 나타낸다.
활용 예시로 컴퓨터 시스템 개체와 연결된 총 프로세스 인스턴스 수를 확인가능하다
Get-CimInstance Win32_ComputerSystem | Select-Object NumberOfLogicalProcessors, NumberOfProcessors
복잡한 내용이지만, 참고로 NumberOfLogicalProcessors 값이 NumberOfProcessors 값보다 크면 컴퓨터 시스템은 다중 코어 시스템이거나, 하이퍼스레딩에 사용할 수 있는 프로세서가 하나 이상 있다는 뜻이다.
과제
끝마치며 지금까지의 내용을 바탕으로 다음 상황을 해결해 보도록 하자
각자의 하드디스크 에 관한 정보를 가져와보자.
이름, 파티션, 모델, 펌웨어 그리고 시리얼 넘버를 출력시켜 보자
Get-WmiObject, Get-CimInstance 어떤 것이어도 무관하다
아래는 해결 과정이다
1. 클래스 검색
우선 관련된 클래스를 검색해 보자
Get-WmiObject *disk* -list
이중 Win32_DiskDrive가 눈에 들어온다.
2. 속성 검색
Win32_DiskDrive의 속성이 뭐가 있는지 살벼보자
Get-WmiObject win32_diskdrive | Get-Member
Img10과 같이 우리가 원하는 속성들이 있음을 알 수 있다.
3. 결과 수행
Get-CimInstance Win32_DiskDrive | Select-Object FirmwareRevision, Model, Name, Partitions, SerialNumber, Size
요약
WMI (Windows Management Instrumentation)
Windows 기반 OS에서의 데이터 관리 및 작업을 위한 인프라다
Get-WmiObject, Get-CimInstance를 통해 불러올 수 있으며, 두 명령다 동일한 것으로 간주한다
<클래스>
- Win32_OperatingSystem
운영체제에 대한 정보를 포함한다
InstallDate, LastBootUpTime, SystemDrive, Version, OSType, ...
- Win32_UserAccount
사용자 계정에 대한 정보를 포함한다
Name, SID, PasswordChangeable, ...
- Win32_PhysicalMemory
PC 하드웨어 정보를 포함한다
Manufacturer, Banklabel, Configuredclockspeed, ...
- Win32_ComputerSystem
컴퓨터 시스템 정보를 포함한다
NumberOfLogicalProcessors, NumberOfProcessors, ...
참고
https://learn.microsoft.com/ko-kr/windows/win32/cimwin32prov/cimwin32-wmi-providers
'programming ⌨ > 파워쉘 PowerShell' 카테고리의 다른 글
나를 위한 PowerShell(6) : Object 다루기 (0) | 2024.03.01 |
---|---|
나를 위한 PowerShell(5) : Pipeline과 출력 형식 (0) | 2024.02.29 |
나를 위한 PowerShell(4) : 개인 설정과 ISE (0) | 2024.02.28 |
나를 위한 PowerShell(3) : Execution Policy와 우회 (0) | 2024.02.26 |