Function Get-WmidrivesCustom([string]$class,[string]$computername = "localhost",[string]$namespace = "root\cimv2",[int]$timeout= 15,[string]$where)
{
$ConnectionOptions = new-object System.Management.ConnectionOptions
$EnumerationOptions = new-object System.Management.EnumerationOptions
$timeoutseconds = new-timespan -seconds $timeout
$EnumerationOptions.set_timeout($timeoutseconds)
$assembledpath = "\\" + $computername + "\" + $namespace
#write-host $assembledpath -foregroundcolor yellow
$Scope = new-object System.Management.ManagementScope $assembledpath, $ConnectionOptions
$Scope.Connect()
$querystring = "SELECT * FROM " + $class + " " + $where
#
write-host $querystring
$query = new-object System.Management.ObjectQuery $querystring
$searcher = new-object System.Management.ManagementObjectSearcher
$searcher.set_options($EnumerationOptions)
$searcher.Query = $querystring
$searcher.Scope = $Scope
return $searcher.get()
}
$csvContents = @()
$servers = get-content -Path "c:\ServerDiskMonitoring\servers.txt"
foreach($server in $servers)
{
#$drive_information =Get-WmiCustom "Win32_LogicalDisk"
$row = New-Object System.Object
$row | Add-Member -MemberType NoteProperty -Name "ServerName" -Value $server
$drive_information = Get-WmidrivesCustom -ComputerName $server -NameSpace "root\cimv2" -Class Win32_logicaldisk -TimeOut 3 -Where "WHERE MediaType = 12"
foreach($drive in $drive_information)
{
$drive_freespace_gb = [Math]::Round($drive.FreeSpace / 1024 / 1024 / 1024, 2)
$drive_name = $drive.Name
write-host $drive_name
write-host $drive_freespace_gb
$row = New-Object System.Object
$row | Add-Member -MemberType NoteProperty -Name "DriveName" -Value "$drive_name"
$row | Add-Member -MemberType NoteProperty -Name "DriveFreeSpace" -Value "$drive_freespace_gb"
$csvContents += $row
}
}
$csvContents | Export-CSV -Path C:\temp\ServerDrives.csv
{
$ConnectionOptions = new-object System.Management.ConnectionOptions
$EnumerationOptions = new-object System.Management.EnumerationOptions
$timeoutseconds = new-timespan -seconds $timeout
$EnumerationOptions.set_timeout($timeoutseconds)
$assembledpath = "\\" + $computername + "\" + $namespace
#write-host $assembledpath -foregroundcolor yellow
$Scope = new-object System.Management.ManagementScope $assembledpath, $ConnectionOptions
$Scope.Connect()
$querystring = "SELECT * FROM " + $class + " " + $where
#
write-host $querystring
$query = new-object System.Management.ObjectQuery $querystring
$searcher = new-object System.Management.ManagementObjectSearcher
$searcher.set_options($EnumerationOptions)
$searcher.Query = $querystring
$searcher.Scope = $Scope
return $searcher.get()
}
$csvContents = @()
$servers = get-content -Path "c:\ServerDiskMonitoring\servers.txt"
foreach($server in $servers)
{
#$drive_information =Get-WmiCustom "Win32_LogicalDisk"
$row = New-Object System.Object
$row | Add-Member -MemberType NoteProperty -Name "ServerName" -Value $server
$drive_information = Get-WmidrivesCustom -ComputerName $server -NameSpace "root\cimv2" -Class Win32_logicaldisk -TimeOut 3 -Where "WHERE MediaType = 12"
foreach($drive in $drive_information)
{
$drive_freespace_gb = [Math]::Round($drive.FreeSpace / 1024 / 1024 / 1024, 2)
$drive_name = $drive.Name
write-host $drive_name
write-host $drive_freespace_gb
$row = New-Object System.Object
$row | Add-Member -MemberType NoteProperty -Name "DriveName" -Value "$drive_name"
$row | Add-Member -MemberType NoteProperty -Name "DriveFreeSpace" -Value "$drive_freespace_gb"
$csvContents += $row
}
}
$csvContents | Export-CSV -Path C:\temp\ServerDrives.csv
No comments:
Post a Comment