Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Monday, October 25, 2010

What are the drive types enumerated by Win32_LogicalDrive

IN PowerShell, we can leverage the power of the WMI interface to enumerate the properties of the hardware inside of our clients. A simple PowerShell script to do that is:


$computer = "LocalHost"
$namespace = "root\CIMV2"
Get-WmiObject -class Win32_LogicalDisk -computername $computer -namespace $namespace

The information below is an example of the returned data. Remember, this script will return this set of data of all drives connected to the client at the time it was executed.

__GENUS : 2
__CLASS : Win32_LogicalDisk
__SUPERCLASS : CIM_LogicalDisk
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_LogicalDisk.DeviceID="E:"
__PROPERTY_COUNT : 40
__DERIVATION : {CIM_LogicalDisk, CIM_StorageExtent, CIM_Logical
Device, CIM_LogicalElement...}
__SERVER : FERRARI5X64
__NAMESPACE : root\CIMV2
__PATH : \\FERRARI5X64\root\CIMV2:Win32_LogicalDisk.Devic
eID="E:"
Access :
Availability :
BlockSize :
Caption : E:
Compressed :
ConfigManagerErrorCode :
ConfigManagerUserConfig :
CreationClassName : Win32_LogicalDisk
Description : CD-ROM Disc
DeviceID : E:
DriveType : 5
ErrorCleared :
ErrorDescription :
ErrorMethodology :
FileSystem :
FreeSpace :
InstallDate :
LastErrorCode :
MaximumComponentLength :
MediaType : 11
Name : E:
NumberOfBlocks :
PNPDeviceID :
PowerManagementCapabilities :
PowerManagementSupported :
ProviderName :
Purpose :
QuotasDisabled :
QuotasIncomplete :
QuotasRebuilding :
Size :
Status :
StatusInfo :
SupportsDiskQuotas :
SupportsFileBasedCompression :
SystemCreationClassName : Win32_ComputerSystem
SystemName : FERRARI5X64
VolumeDirty :
VolumeName :
VolumeSerialNumber :

IN the above example, the Drive Type is 5. We can utilize the drive type to filter the results to only include the drives that we want to work with. The valid drive types are:
1 - Drive could not be determined
2 - Removable drive
3 - Local hard disk
4 - Network disk
5 - Compact disk (CD)
6 - RAM disk


If you wanted to only returned the data for the local hard drives, the code can be modified as such:

$computer = "LocalHost"
$namespace = "root\CIMV2"
Get-WmiObject -class Win32_LogicalDisk -computername $computer -namespace $namespace | Where {$_.DriveType -eq 3}




No comments: