86 lines
4.3 KiB
PowerShell
86 lines
4.3 KiB
PowerShell
function ConvertTo-DriveInfo {
|
|
<#
|
|
.SYNOPSIS
|
|
Convert the CIMInstance to a defined/smaller DriveInfo (easier to serialize too)
|
|
|
|
.OUTPUTS
|
|
Returns a [object[]] of drives.
|
|
#>
|
|
[CmdletBinding()]
|
|
[OutputType([string[]])]
|
|
param (
|
|
[Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
|
|
[Microsoft.Management.Infrastructure.CimInstance]$CimInstance
|
|
)
|
|
begin {
|
|
$logLead = (Get-LogLeadName)
|
|
|
|
$gigabytes = (1024.0 * 1024.0 * 1024.0)
|
|
# Define the defaults for the DriveObject response to add some custom display information
|
|
$defaultTypeName = 'DriveInfo'
|
|
$defaultKeys = @('DeviceID')
|
|
$defaultDisplaySet = @('DeviceID', 'FileSystem', 'VolumeName', 'FreeSpaceGB', 'SizeGB')
|
|
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]]$defaultDisplaySet)
|
|
$defaultKeyPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultKeyPropertySet',[string[]]$defaultKeys)
|
|
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet,$defaultKeyPropertySet)
|
|
}
|
|
process {
|
|
try {
|
|
$driveObject = New-Object PSCustomObject -Property @{
|
|
Caption = $CimInstance.Caption
|
|
Description = $CimInstance.Description
|
|
InstallDate = $CimInstance.InstallDate
|
|
Name = $CimInstance.Name
|
|
Status = $CimInstance.Status
|
|
Availability = $CimInstance.Availability
|
|
ConfigManagerErrorCode = $CimInstance.ConfigManagerErrorCode
|
|
ConfigManagerUserConfig = $CimInstance.ConfigManagerUserConfig
|
|
CreationClassName = $CimInstance.CreationClassName
|
|
DeviceID = $CimInstance.DeviceID
|
|
ErrorCleared = $CimInstance.ErrorCleared
|
|
ErrorDescription = $CimInstance.ErrorDescription
|
|
LastErrorCode = $CimInstance.LastErrorCode
|
|
PNPDeviceID = $CimInstance.PNPDeviceID
|
|
PowerManagementCapabilities = $CimInstance.PowerManagementCapabilities
|
|
PowerManagementSupported = $CimInstance.PowerManagementSupported
|
|
StatusInfo = $CimInstance.StatusInfo
|
|
SystemCreationClassName = $CimInstance.SystemCreationClassName
|
|
SystemName = $CimInstance.SystemName
|
|
Access = $CimInstance.Access
|
|
BlockSize = $CimInstance.BlockSize
|
|
ErrorMethodology = $CimInstance.ErrorMethodology
|
|
NumberOfBlocks = $CimInstance.NumberOfBlocks
|
|
Purpose = $CimInstance.Purpose
|
|
FreeSpace = $CimInstance.FreeSpace
|
|
FreeSpaceGB = [Math]::Round( ($CimInstance.FreeSpace / $gigabytes), 2)
|
|
Size = $CimInstance.Size
|
|
SizeGB = [Math]::Round( ($CimInstance.Size / $gigabytes), 2)
|
|
Compressed = $CimInstance.Compressed
|
|
DriveType = $CimInstance.DriveType
|
|
FileSystem = $CimInstance.FileSystem
|
|
MaximumComponentLength = $CimInstance.MaximumComponentLength
|
|
MediaType = $CimInstance.MediaType
|
|
ProviderName = $CimInstance.ProviderName
|
|
QuotasDisabled = $CimInstance.QuotasDisabled
|
|
QuotasIncomplete = $CimInstance.QuotasIncomplete
|
|
QuotasRebuilding = $CimInstance.QuotasRebuilding
|
|
SupportsDiskQuotas = $CimInstance.SupportsDiskQuotas
|
|
SupportsFileBasedCompression = $CimInstance.SupportsFileBasedCompression
|
|
VolumeDirty = $CimInstance.VolumeDirty
|
|
VolumeName = $CimInstance.VolumeName
|
|
VolumeSerialNumber = $CimInstance.VolumeSerialNumber
|
|
PSComputerName = $CimInstance.PSComputerName
|
|
}
|
|
|
|
#Give this object a unique typename
|
|
$driveObject.PSObject.TypeNames.Insert(0,$defaultTypeName)
|
|
$driveObject | Add-Member -MemberType MemberSet -Name PSStandardMembers -Value $PSStandardMembers
|
|
|
|
return $driveObject
|
|
} catch {
|
|
Write-Warning "$logLead : Could not convert item to DriveInfo object. Check error below. Returning `$null"
|
|
Write-ErrorObject -ErrorItem $PSItem
|
|
return $null
|
|
}
|
|
}
|
|
} |