Get-WmiObject는 일반적인 시스템 관리 작업에 가장 중요한 cmdlet입니다. 중요한 하위 시스템 설정은 모두 WMI를 통해 표시됩니다. 게다가 WMI는 데이터를 하나 이상의 항목 컬렉션에 있는 데이터로 취급합니다. 또한 Windows PowerShell에서는 개체에 대한 작업을 수행하고 하나 또는 여러 개의 개체를 동일한 방식으로 취급할 수 있는 파이프라인을 사용하므로 일반적인 WMI 액세스를 통해 거의 자동으로 고급 작업을 수행할 수 있습니다.

다음 예제에서는 임의의 컴퓨터에 대해 Get-WmiObject를 사용하여 특정 정보를 수집하는 방법을 보여 줍니다. 이러한 예제에서는 ComputerName 매개 변수가 로컬 컴퓨터를 나타내는 점(.)으로 지정되어 있지만 WMI를 통해 액세스할 수 있는 컴퓨터에 연결된 이름이나 IP 주소를 지정할 수도 있습니다. 로컬 컴퓨터에 대한 정보를 검색하려는 경우에는 -ComputerName을 생략해도 됩니다.

데스크톱 설정 표시

다음 명령은 로컬 컴퓨터에 있는 데스크톱에 대한 정보를 수집합니다.

Get-WmiObject -Class Win32_Desktop -ComputerName .

이 명령은 사용 여부에 관계없이 모든 데스크톱에 대한 정보를 반환합니다.

참고:

일부 WMI 클래스가 반환하는 정보에는 많은 내용이 포함될 수 있으며 종종 WMI 클래스에 대한 메타데이터가 포함되기도 합니다. 이러한 메타데이터 속성은 대부분 이름이 두 개의 밑줄로 시작되므로 Select-Object를 사용하여 속성을 필터링할 수 있습니다. 속성 값으로 [a-z]*를 사용하면 알파벳 문자로 시작하는 속성만 지정할 수 있습니다. 예를 들면 다음과 같습니다.

Get-WmiObject -Class Win32_Desktop -ComputerName . | Select-Object -Property [a-z]*

메타데이터를 필터링하여 제외시키려면 파이프 연산자(|)를 사용하여 Get-WmiObject 명령의 결과를 Select-Object -Property [a-z]*에 보내십시오.

BIOS 정보 표시

다음 WMI Win32_BIOS 클래스는 로컬 컴퓨터에 있는 시스템 BIOS에 대해 매우 간단하지만 완전한 정보를 반환합니다.

Get-WmiObject -Class Win32_BIOS -ComputerName .

프로세서 정보 표시

다음 WMI Win32_Processor 클래스는 일반적인 프로세서 정보를 반환합니다. 이러한 정보는 나중에 필터링할 수 있습니다.

Get-WmiObject -Class Win32_Processor -ComputerName . | Select-Object -Property [a-z]*

프로세서 계열에 대한 일반적인 설명을 보려면Win32_ComputerSystem SystemType 속성만 반환하면 됩니다.

PS> Get-WmiObject -Class Win32_ComputerSystem -ComputerName . | Select-Object -Property SystemType
SystemType
----------
X86-based PC

컴퓨터 제조업체 및 모델 표시

Win32_ComputerSystem을 사용하여 컴퓨터 모델 정보를 볼 수도 있습니다. 다음과 같이 표준 표시 출력 결과는 필터링 없이OEM 데이터를 제공합니다.

PS> Get-WmiObject -Class Win32_ComputerSystem
Domain              : WORKGROUP
Manufacturer        : Compaq Presario 06
Model               : DA243A-ABA 6415cl NA910
Name                : MyPC
PrimaryOwnerName    : Jane Doe
TotalPhysicalMemory : 804765696

일부 하드웨어에서 직접 정보를 반환하는 이와 같은 명령을 실행하면 사용자가 가지고 있는 것과 동일한 데이터가 출력됩니다. 일부 정보는 하드웨어 제조업체에서 제대로 구성하지 않아 사용하지 못할 수 있습니다.

설치된 핫픽스 표시

다음과 같이 Win32_QuickFixEngineering을 사용하여 설치된 핫픽스를 모두 표시할 수 있습니다.

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .

이 클래스는 다음과 같은 핫픽스 목록을 반환합니다.

Description         : Update for Windows XP (KB910437)
FixComments         : Update
HotFixID            : KB910437
Install Date        :
InstalledBy         : Administrator
InstalledOn         : 12/16/2005
Name                :
ServicePackInEffect : SP3
Status              :

일부 속성을 제외하여 출력을 더 간단하게 만들 수 있습니다. 다음과 같이 Get-WmiObject Property 매개 변수를 사용하여 HotFixID만 선택할 수 있지만, 모든 메타데이터가 기본적으로 표시되므로 실제로는 더 많은 정보가 반환됩니다.

PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property HotFixId
HotFixID         : KB910437
__GENUS          : 2
__CLASS          : Win32_QuickFixEngineering
__SUPERCLASS     :
__DYNASTY        :
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :

데이터가 더 반환되는 것은 Get-WmiObject의 Property 매개 변수가 Windows PowerShell에 반환된 개체 대신 WMI 클래스 인스턴스에서 반환된 속성을 제한하기 때문입니다. 출력을 더 간단하게 만들려면 다음과 같이 Select-Object를 사용하십시오.

PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property Hot
FixId | Select-Object -Property HotFixId
HotFixId
--------
KB910437

운영 체제의 버전 정보 표시

Win32_OperatingSystem 클래스 속성에는 버전 및 서비스 팩 정보가 포함되어 있습니다. 다음과 같이 이러한 속성만 명시적으로 선택하여 Win32_OperatingSystem의 버전에 대한 요약 정보를 볼 수 있습니다.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

또한 Select-Object Property 매개 변수와 함께 와일드카드를 사용할 수도 있습니다. BuildServicePack으로 시작하는 모든 속성을 사용해야 하므로 이 속성을 다음과 같이 간단하게 만들 수 있습니다.

PS> Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property Build*,OSType,ServicePack*

BuildNumber             : 2600
BuildType               : Uniprocessor Free
OSType                  : 18
ServicePackMajorVersion : 2
ServicePackMinorVersion : 0

로컬 사용자 및 소유자 표시

Win32_OperatingSystem 속성을 선택하면 정식 사용자 수, 현재 사용자 수 및 소유자 이름 등의 일반적인 로컬 사용자 정보를 찾을 수 있습니다. 속성을 명시적으로 선택하여 다음과 같이 표시할 수 있습니다.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser

와일드카드를 사용한 더 간단한 버전은 다음과 같습니다.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property *user*

사용 가능한 디스크 공간 보기

WMI Win32_LogicalDisk 클래스를 사용하여 로컬 드라이브의 디스크 공간과 사용 가능한 공간을 확인할 수 있습니다. WMI가 고정 하드 디스크에 대해 사용하는 값인 DriveType 3을 갖는 인스턴스만 확인하면 됩니다.

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName .

DeviceID     : C:
DriveType    : 3
ProviderName :
FreeSpace    : 65541357568
Size         : 203912880128
VolumeName   : Local Disk

DeviceID     : Q:
DriveType    : 3
ProviderName :
FreeSpace    : 44298250240
Size         : 122934034432
VolumeName   : New Volume

PS> Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum

로그온 세션 정보 보기

다음과 같이 WMI Win32_LogonSession 클래스를 통해 사용자와 관련된 로그온 세션의 일반 정보를 볼 수 있습니다.

Get-WmiObject -Class Win32_LogonSession -ComputerName .

컴퓨터에 로그온한 사용자 보기

Win32_ComputerSystem을 사용하여 특정 컴퓨터 시스템에 로그온한 사용자를 표시할 수 있습니다. 이 명령은 다음과 같이 시스템 데스크톱에 로그온한 사용자만 반환합니다.

Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .

컴퓨터에서 현지 시간 보기

WMI Win32_LocalTime 클래스를 사용하여 특정 컴퓨터에서 현재 현지 시간을 검색할 수 있습니다. 이 클래스는 기본적으로 모든 메타데이터를 표시하므로 다음과 같이 Select-Object를 사용하여 이러한 메타데이터를 필터링할 수 있습니다.

PS> Get-WmiObject -Class Win32_LocalTime -ComputerName . | Select-Object -Property [a-z]*


Day          : 15
DayOfWeek    : 4
Hour         : 12
Milliseconds :
Minute       : 11
Month        : 6
Quarter      : 2
Second       : 52
WeekInMonth  : 3
Year         : 2006

서비스 상태 표시

앞에서 설명한 대로 Get-Service cmdlet을 로컬로 사용하여 특정 컴퓨터의 모든 서비스 상태를 볼 수 있습니다. 원격 시스템의 경우 WMI Win32_Service 클래스를 사용할 수 있습니다. 또한 Select-Object를 사용하여 Status, NameDisplayName에 대한 결과를 필터링하는 경우 출력 형식은 다음과 같이 Get-Service와 거의 동일합니다.

Get-WmiObject -Class Win32_Service -ComputerName . | Select-Object -Property Status,Name,DisplayName

매우 긴 이름으로 일반 서비스의 전체 이름을 표시하는 경우 다음과 같이 AutoSizeWrap 매개 변수와 함께 Format-Table을 사용하여 열 너비를 최적화하고 긴 이름을 자르는 대신 래핑할 수 있습니다.

Get-WmiObject -Class Win32_Service -ComputerName . | Format-Table -Property Status,Name,DisplayName -AutoSize -Wrap




목차