Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Code Snippet from aperturescience.su
- # Parameters
- # Body
- Write-Verbose "Starting volume checks..."
- $volumes = Get-WmiObject win32_volume -filter "drivetype=3"
- foreach ($volume in $volumes)
- {
- $driveletter = $volume.name
- Write-Verbose "Checking $driveletter"
- if (!($thresholdexcludesystem -and ($volume.systemvolume)))
- {
- # Disk space checks
- $freespace = $volume.freespace /1Gb
- $result = $freespace -lt $threshold
- if ($result)
- {
- send-email "WARNING: volume $driveletter has only $freespace left, this is less than threshold $threshold" $false
- }
- else
- {
- send-email "volume $driveletter has more than enough disk space, $freespace with threshold $threshold" $true
- }
- }
- else
- {
- Write-Verbose "Skipping $driveletter as it is a system drive and I am excluding it from threshold checking"
- }
- # Dirty Flag Checks/checkdisk
- # 1. http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/ac0a7de1-fc43-4a01-8ffb-371ef9845bbc
- # 2. http://gallery.technet.microsoft.com/scriptcenter/57076851-97fb-4af6-8c5c-1e34156ceab4 using chkntfs
- #1
- Write-Verbose "WMI Check"
- $wmidirtybitset = $volume.dirtybitset
- if ($wmidirtybitset)
- {
- send-email "WARNING: volume $driveletter is marked as dirty in WMI" $false
- }
- else
- {
- send-email "$driveletter is not marked as dirty in WMI" $true
- }
- #2 This doesnt work for volumes without a drive letter
- if ($volume.driveletter -ne $null)
- {
- Write-Verbose "chkntfs Check"
- $chkntfsresult = ""
- try
- {
- $tempchkntfsresult = chkntfs $volume.driveletter
- $chkntfsresult = [string]$tempchkntfsresult
- }
- catch
- {
- send-email "error running chkntfs.exe" $false
- }
- $chkntfsdirtybitset= (($chkntfsresult.contains("run on next reboot")) -or ($chkntfsresult.contains("is dirty")))
- if ($chkntfsdirtybitset)
- {
- send-email "WARNING: volume $driveletter is marked as dirty in chkntfs" $false
- }
- else
- {
- send-email "$driveletter is not marked as dirty in chkntfs" $true
- }
- }
- # Defrag recommended
- $mustdefrag = $volume.DefragAnalysis().DefragRecommended
- if ($mustdefrag)
- {
- send-email "WARNING: volume $driveletter should be defragmented" $false
- }
- else
- {
- send-email "$driveletter doesn't need to be defragmented" $true
- }
- }
- # Code Snippet from aperturescience.su
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement