41 lines
1.9 KiB
PowerShell
41 lines
1.9 KiB
PowerShell
|
# Detects various states of Volume Shadow Copies, Disabled, Enabled with Default schedule, Enabled with custom schedule and Enabled with custom schedule ensuring all disks are enabled.
|
||
|
|
||
|
$ScheduledTasks = Get-ScheduledTask -TaskName "ShadowCopy*"
|
||
|
$DefaultTasks = Get-ScheduledTask -TaskName "ShadowCopyVolume{*}"
|
||
|
$CustomTasks = Get-ScheduledTask -TaskName "ShadowCopy * drive"
|
||
|
|
||
|
$CustomTaskLetters = ForEach ($task in $CustomTasks){$task.TaskName[11]}
|
||
|
|
||
|
$VSS = [PSCustomObject]@{
|
||
|
enabled = $false
|
||
|
type = $null
|
||
|
}
|
||
|
|
||
|
$Disks = Get-Volume | Where-Object {$_.DriveType -eq "Fixed"} | Where-Object {$_.DriveLetter -ne $null} | Where-Object {$_.Size -gt 5GB}
|
||
|
|
||
|
$MissingDrives = ForEach ($letter in $Disks.DriveLetter){if ($letter -notin $CustomTaskLetters){$letter}}
|
||
|
|
||
|
#No Tasks
|
||
|
if ($ScheduledTasks -eq $null)
|
||
|
{Write-Host "No VSS Tasks"}
|
||
|
#Default Tasks
|
||
|
elseif ($DefaultTasks.State -ne "Disabled")
|
||
|
{Write-Host "Default VSS Tasks Enabled"; $VSS.enabled = $true; $VSS.type = "Default"}
|
||
|
#Default Tasks Disabled and No Custom Tasks
|
||
|
if (($DefaultTasks.State -eq "Disabled") -and ($CustomTasks -eq $null))
|
||
|
{Write-Host "Default VSS Tasks Disabled and NO Custom VSS Tasks"; $VSS.enabled = $false; $VSS.type = "Default"}
|
||
|
#Default Tasks Disabled and Custom Tasks Enabled
|
||
|
if ((($DefaultTasks.State -eq "Disabled") -or ($DefaultTasks -eq $null)) -and ($CustomTasks -ne $null))
|
||
|
{Write-Host "Default VSS Tasks Disabled and Custom VSS Tasks Enabled"; $VSS.enabled = $true; $VSS.type = "Custom"}
|
||
|
#Default Tasks Disabled and Custom Tasks Enabled, but not all drives have been enabled
|
||
|
if ($MissingDrives -ne $null)
|
||
|
{Write-Host "Default VSS Tasks Disabled and Custom VSS Tasks Enabled, But Not all Drives are Enabled"; $VSS.enabled = $true; $VSS.type = "Custom, Incomplete"}
|
||
|
|
||
|
|
||
|
if ($Host.Version.Major -gt 4){Write-Host $VSS}
|
||
|
elseif ($Host.Version.Major -lt 5){$VSS}
|
||
|
|
||
|
if ($VSS.enabled -eq $false){exit 1}
|
||
|
elseif ($VSS.type -ne "Custom"){exit 2}
|
||
|
else{exit 0}
|