Script:
# *************************************************************************
# ############################### DISK VOLUMES ############################
# Places Disk Volumes.txt on the desktop
# Contains info about your disk volumes (partitions)
# *************************************************************************
# Create an array to hold the result
$arr = @()
# Create an array of managementobjects
$dskvol = gwmi win32_volume -filter "NOT(drivetype= 2) OR NOT(capacity=null)"
$dskrmv = $dskvol | ? {$_.drivetype -eq 2}
$dskodd = $dskvol | ? {$_.drivetype -eq 5}
$dsk = $dskvol | ? {$_.drivetype -eq 3}
# Process the array
foreach ($e in $dsk) {
# Create a hash array
$hash = @{
"DISK PARTITION" = "*" * 40
"Caption" = $e.caption
"Drive Letter" = $e.driveletter
"Label" = $e.label
"Capacity" = "{0:n2} GB = {1:n0} MB" -f (($e.capacity/1GB),($e.capacity/1MB))
"Free Space" = "{0:n2} GB = {1:n0} MB" -f (($e.freespace/1GB),($e.freespace/1MB))
"Volume Type" = "Partition"
"Boot Volume" = $e.bootvolume
"System Volume" = $e.systemvolume
"Compressed" = $e.compressed
"Serial Number" = $e.serialnumber
"Device ID" = $e.deviceid
"File System" = $e.filesystem
"Block Size" = $e.blocksize
"Indexing Enabled" = $e.indexingenabled
"Auto Mount" = $e.automount
"Dirty Bit Set" = $e.dirtybitset
} # end Hash table
# Create obj based upon hash; use select to specify order
$obj = New-Object -TypeName PSObject -Property $hash |
SELECT "DISK PARTITION", label,"Drive Letter", capacity,"free space", `
"volume type", "file system","block size","boot volume", `
"system volume", compressed,"indexing enabled", "auto mount", "serial number"
# add to obj to the result array
$arr += $obj
} # end of foreach
foreach ($e in $dskodd) {
# Create a hash array
$hash = @{
"CDROM" = "*" * 40
"Caption" = $e.caption
"Drive Letter" = $e.driveletter
"Label" = $e.label
"Capacity" = "{0:n2} GB = {1:n0} MB" -f (($e.capacity/1GB),($e.capacity/1MB))
"Free Space" = "{0:n2} GB = {1:n0} MB" -f (($e.freespace/1GB),($e.freespace/1MB))
"Volume Type" = "CDROM"
"Boot Volume" = $e.bootvolume
"System Volume" = $e.systemvolume
"Compressed" = $e.compressed
"Serial Number" = $e.serialnumber
"Device ID" = $e.deviceid
"File System" = $e.filesystem
"Block Size" = $e.blocksize
"Indexing Enabled" = $e.indexingenabled
"Auto Mount" = $e.automount
"Dirty Bit Set" = $e.dirtybitset
} # end Hash table
# Create obj based upon hash; use select to specify order
$obj = New-Object -TypeName PSObject -Property $hash |
SELECT "CDROM", label,"Drive Letter", capacity,"free space", `
"volume type", "file system","block size","boot volume", `
"system volume", compressed,"indexing enabled", "auto mount", "serial number"
# add to obj to the result array
$arr += $obj
} # end of foreach
foreach ($e in $dskRMV) {
# Create a hash array
$hash = @{
"REMOVABLE DISK" = "*" * 40
"Caption" = $e.caption
"Drive Letter" = $e.driveletter
"Label" = $e.label
"Capacity" = "{0:n2} GB = {1:n0} MB" -f (($e.capacity/1GB),($e.capacity/1MB))
"Free Space" = "{0:n2} GB = {1:n0} MB" -f (($e.freespace/1GB),($e.freespace/1MB))
"Volume Type" = "Removable"
"Boot Volume" = $e.bootvolume
"System Volume" = $e.systemvolume
"Compressed" = $e.compressed
"Serial Number" = $e.serialnumber
"Device ID" = $e.deviceid
"File System" = $e.filesystem
"Block Size" = $e.blocksize
"Indexing Enabled" = $e.indexingenabled
"Auto Mount" = $e.automount
"Dirty Bit Set" = $e.dirtybitset
} # end Hash table
# Create obj based upon hash; use select to specify order
$obj = New-Object -TypeName PSObject -Property $hash |
SELECT "REMOVABLE DISK", label,"Drive Letter", capacity,"free space", `
"volume type", "file system","block size","boot volume", `
"system volume", compressed,"indexing enabled", "auto mount", "serial number"
# add to obj to the result array
$arr += $obj
} # end of foreach
$arr > $env:userprofile\desktop\"DISK VOLUMES.TXT"
EXIT
EXIT