디스크 및 파일 시스템에 대한 WMI 작업은 디스크 드라이브 하드웨어 상태 및 논리 볼륨에 대한 정보를 가져옵니다. 다른 예제는 https://www.microsoft.com/technetTechNet ScriptCenter를 참조하세요.
이 항목에 표시된 스크립트 예제는 로컬 컴퓨터에서만 데이터를 가져옵니다. 스크립트를 사용하여 원격 컴퓨터에서 데이터를 가져오는 방법에 대한 자세한 내용은 원격 컴퓨터 WMI에 연결하는참조하세요.
다음 절차에서는 스크립트를 실행하는 방법을 설명합니다.
스크립트 실행하려면
- 코드를 복사하고 .vbs 확장명(예: filename.vbs파일에 저장합니다. 텍스트 편집기가 파일에 .txt 확장자를 추가하지 않는지 확인합니다.
- 명령 프롬프트 창을 열고 파일을 저장한 디렉터리로 이동합니다.
- 명령 프롬프트에서 cscript filename.vbs 입력합니다.
- 이벤트 로그에 액세스할 수 없는 경우 관리자 권한 명령 프롬프트에서 실행 중인지 확인합니다. 보안 이벤트 로그와 같은 일부 이벤트 로그는 UAC(사용자 액세스 제어)로 보호될 수 있습니다.
메모
기본적으로 cscript는 명령 프롬프트 창에 스크립트의 출력을 표시합니다. WMI 스크립트는 많은 양의 출력을 생성할 수 있으므로 출력을 파일로 리디렉션할 수 있습니다. 명령 프롬프트에서 cscript filename.vbs > outfile.txt 입력하여 filename.vbs 스크립트의 출력을 outfile.txt리디렉션합니다.
다음 표에서는 로컬 컴퓨터에서 다양한 형식의 데이터를 가져오는 데 사용할 수 있는 스크립트 예제를 나열합니다.
| ... 각 사용자가 현재 컴퓨터에서 사용 중인 디스크 공간의 양을 알아보세요. |
디스크 할당량을 사용하는 경우 Win32_DiskQuota 클래스를 사용하고 User 및 DiskSpaceUsed 속성의 값을 검색합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuotas = objWMIService.ExecQuery ("Select * from Win32_DiskQuota")
For each objQuota in colQuotas
Wscript.Echo "Volume: "& vbTab & objQuota.QuotaVolume
Wscript.Echo "User: "& vbTab & objQuota.User
Wscript.Echo "Disk Space Used: " & vbTab & objQuota.DiskSpaceUsed
Next
|
$strComputer = "."
$colItems = Get-WmiObject -Class Win32_DiskQuota -ComputerName $strComputer
foreach ($objQuota in $colItems)
{
"Volume: " + $objQuota.QuotaVolume
"User: " + $objQuota.User
"Disk Space Used: " + $objQuota.DiskSpaceUsed
}
|
|
| ... 이동식 드라이브가 컴퓨터에 추가되거나 컴퓨터에서 제거된 시기를 결정합니까? |
Win32_VolumeChangeEvent 클래스를 쿼리하는 모니터링 스크립트를 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService. ExecNotificationQuery( "Select * from Win32_VolumeChangeEvent")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo objLatestEvent.DriveName
Wscript.Echo objLatestEvent.EventType
Wscript.Echo objLatestEvent.Time_Created
Loop
|
|
| ... CD가 CD-ROM 드라이브에 있는지 확인합니다. |
Win32_CDROMDrive 클래스 및 MediaLoaded 속성을 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery( "Select * from Win32_CDROMDrive")
For Each objItem in colItems
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Media Loaded: " & objItem.MediaLoaded
Next
|
$strComputer = "."
$colItems = Get-WmiObject -Class Win32_CDROMDrive -ComputerName $strComputer
foreach ($objItem in $colItems)
{
"Device ID: " + $objItem.DeviceID
"MediaLoaded: " + $objItem.MediaLoaded
}
|
|
| ... 디스크가 플로피 드라이브에 있는지 확인합니다. |
Win32_LogicalDisk 클래스를 사용하고 FreeSpace 속성을 확인합니다. 값이 Null이면 드라이브에 디스크가 없습니다.
strComputer = "." set objWMIService = GetObject( "winmgmts:\\" & strComputer & "\root\cimv2") set colItems = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk Where DeviceID = 'A:'") For Each objItem in colItems
intFreeSpace = objItem.FreeSpace
If IsNull(intFreeSpace) Then
Wscript.Echo "There is no disk in the floppy drive."
Else
Wscript.Echo "There is a disk in the floppy drive."
End If
Next
|
$strComputer = "." $colItems = Get-WmiObject -Class Win32_LogicalDisk -Namespace "root\cimv2" -ComputerName $strComputer | ' Where-Object { $_. DeviceID -eq "A:" } foreach ($objItem in $colItems)
{
$intFreeSpace = $objItem.FreeSpace
if ($intFreeSpace -eq $null) { "There is no disk in the floppy drive." }
else { "There is a disk in the floppy drive." }
}
|
|
| ... 고정 하드 디스크와 이동식 하드 디스크를 구분하시겠습니까? |
Win32_LogicalDisk 클래스를 사용하고 DriveType 속성의 값을 확인합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: "& vbTab _
& objDisk.DeviceID
Select Case objDisk.DriveType
Case 1
Wscript.Echo "No root directory. " & "Drive type could not be " & "determined."
Case 2
Wscript.Echo "DriveType: "& vbTab & "Removable drive."
Case 3
Wscript.Echo "DriveType: "& vbTab & "Local hard disk."
Case 4
Wscript.Echo "DriveType: "& vbTab & "Network disk."
Case 5
Wscript.Echo "DriveType: "& vbTab & "Compact disk."
Case 6
Wscript.Echo "DriveType: "& vbTab & "RAM disk."
Case Else
Wscript.Echo "Drive type could not be" & " determined."
End Select
Next
|
$strComputer = "." $colDisks = Get-WmiObject -Class Win32_LogicalDisk -ComputerName $strComputer foreach ($objDisk in $colDisks)
{
"DeviceID: " + $objDisk.deviceID
switch ($objDisk.DriveType)
{
'1' { "No root directory. Drive type could not be determined." }
'2' { "DriveType: Removable drive." }
'3' { "DriveType: Local hard disk." }
'4' { "DriveType: Network disk." }
'5' { "DriveType: Compact disk." }
'6' { "DriveType: RAM disk." }
default: { "Drive type could not be determined." }
}
}
|
|
| ... 드라이브에서 사용 중인 파일 시스템을 확인하시겠습니까? |
Win32_LogicalDisk 클래스 및 FileSystem 속성을 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "File System: " & objDisk.FileSystem
Next
|
|
| ... 드라이브에서 사용 가능한 여유 공간을 결정하시겠습니까? |
Win32_LogicalDisk 클래스 및 FreeSpace 속성을 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "Free Disk Space: " & objDisk.FreeSpace
Next
|
|
| ... 드라이브 크기를 확인하시겠습니까? |
Win32_LogicalDisk 클래스 및 Size 속성을 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "DeviceID: " & objDisk.DeviceID
Wscript.Echo "Disk Size: " & objDisk.Size
Next
|
|
| ... 어떤 드라이브가 컴퓨터에 매핑되는지 알아보세요. |
Win32_MappedLogicalDisk 클래스를 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService. ExecQuery("Select * from Win32_MappedLogicalDisk")
For Each objDisk in colDisks
Wscript.Echo "Device ID: " & objDisk.DeviceID
Wscript.Echo "Name: " & objDisk.Name
Wscript.Echo "Free Space: " & objDisk.FreeSpace
Wscript.Echo "Size: " & objDisk.Size
Next
|
|
| ... 하드 디스크 조각 모음 |
Win32_Volume 클래스와 Defrag 메서드를 사용합니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery ("Select * from Win32_Volume Where Name = 'K:\\'")
For Each objVolume in colVolumes
errResult = objVolume.Defrag()
Next
|
|
| ... 논리 디스크 파티션과 연결된 드라이브 문자를 검색하시겠습니까? |
-
Win32_DiskDrive 클래스로 시작하고 DeviceID 속성 및 Win32_DiskDriveToDiskPartition 연결 클래스를 사용하여 Win32_DiskPartition 인스턴스를 쿼리합니다. 이제 실제 드라이브에 파티션 컬렉션이 있습니다.
-
Win32_DiskPartition.DeviceID 속성 및 Win32_LogicalDiskToPartition 연결 클래스를 사용하여 파티션을 나타내는 Win32_LogicalDisk 쿼리합니다.
-
Win32_LogicalDisk.DeviceID드라이브 문자를 가져옵니다.
ComputerName = "." set wmiServices = GetObject ( _ "winmgmts:{impersonationLevel=Impersonate}!/" & ComputerName) ' Get physical disk drive Set wmiDiskDrives = wmiServices.ExecQuery ( "SELECT Caption, DeviceID FROM Win32_DiskDrive") wmiDiskDrives WScript.Echo의 각 wmiDiskDrive에 대해 "디스크 드라이브 캡션: "& wmiDiskDrive.Caption & VbNewLine & "DeviceID: " & " (" & wmiDiskDrive.DeviceID & ")"
'디스크 드라이브 디바이스 ID를 사용하여 연결된 파티션 쿼리 찾기 = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" _ & wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
wmiDiskPartitions = wmiServices.ExecQuery(query) 설정
각 wmiDiskPartitions의 각 wmiDiskPartitions '파티션 디바이스 ID를 사용하여 논리 디스크 집합 wmiLogicalDisks = wmiServices.ExecQuery _ ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" _ & wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
For Each wmiLogicalDisk In wmiLogicalDisks
WScript.Echo "Drive letter associated" _
& " with disk drive = " _
& wmiDiskDrive.Caption _
& wmiDiskDrive.DeviceID _
& VbNewLine & " Partition = " _
& wmiDiskPartition.DeviceID _
& VbNewLine & " is " _
& wmiLogicalDisk.DeviceID
Next
Next
Next
|
|
-
스크립트 및 애플리케이션 대한 WMI 작업
-
WMI C++ 애플리케이션 예제
-
TechNet ScriptCenter
`