$Devices = @() $Resultes = @() $LogOutPut = @() $DeviceCount = 0 $exitState = 0 $Devices = Get-ADComputer -Properties * -Filter { OperatingSystem -like "Windows*"} | Where-Object { $_.Enabled -eq $true } | Select-Object Name, DNSHostName, OperatingSystem, OperatingSystemVersion | Sort-Object Name foreach ($Device in $Devices){ if (Test-Connection -ComputerName $Device.DNSHostName -Quiet){ $DeviceCount += 1 $Resultes = Get-WmiObject Win32_LogicalDisk -ComputerName $Device.DNSHostName -Filter "DriveType=3" -ErrorAction SilentlyContinue | Select-Object DeviceID, Size, Freespace foreach ($Result in $Resultes | Where-Object {$_.DeviceID -like "C:"}){ $Percentage = "{0:P0}" -f ($Result.Freespace / $Result.Size) if(($Result.DeviceID -eq "C:") -and ([int]$Percentage.Split("%")[0] -cle 10)){ $LogOutPut += [PSCustomObject]@{ HostName = $Device.DNSHostName TotCapacity = "{0:N1}" -f ($Result.Size / 1gb) + " GB" FreeSpace = "{0:N1}" -f ($Result.Freespace / 1gb ) + " GB" FreePercentage = $Percentage } } } } } if ($LogOutPut.Count -eq 0){ Write-Output "OK - All devices are in range!" Write-Output " Devices found: $($Devices.Count)" Write-Output " Analyzed devices: $($DeviceCount)" } else { $exitState = 2 Write-Output "CRITICAL! - $($LogOutPut.Count) Devices with space issue!" Write-Output " Devices found: $($Devices.Count)" Write-Output " Analyzed devices: $($DeviceCount)" $LogOutPut | Format-Table } Exit $exitState