Jacob_Levi
Jacob_Levi

Reputation: 11

Looking for a Powershell Script to check if Volume Shadow Copy is enabled

Sorry for asking, new in PowerShell. Looking for a Powershell Script to check if Volume Shadow Copy is enabled. Couldn't find any useful and functional script.

Upvotes: 1

Views: 11064

Answers (2)

when the shadowcopy is enabled, there will be a scheduled task created

$allTasks = Get-ScheduledTask
foreach ($task in $allTasks) {
    if ($task.TaskName.Contains("ShadowCopyVolume")) {

        #get volumeid & drive letter which shadowcopy is enabled
        $allVolumes = Get-Volume
        foreach ($volume in $allVolumes) {
            if ($volume.ObjectId.Contains(($task.TaskName.Split("{")[1]).Split("}")[0])) {
                write-host ($volume.driveletter + ":\ is enabled")
            }
        }
    }
}

script to check if shadowcopy is enabled

Upvotes: 0

postanote
postanote

Reputation: 16126

Where did you look? There are a number samples of these all over the web.

For example, using the script downloadable from here:

Get Shadow Copy Statistics

If you use Shadow Copies of Shared Folders (Previous Versions), this script may help you keep on eye on how much history you have, the average snapshot size, whether you are hitting storage area limits or the 64 shadow copies per volume limit.

https://gallery.technet.microsoft.com/scriptcenter/Get-Shadow-Copy-Statistics-79e05a57

You can use it's example to get stats of such items. Meaning, if you get any results, then of course it's enabled.

#Query the local machine 
.\Get-ShadowCopyStats.ps1 -ServerName . 

#Query a remote machine 
.\Get-ShadowCopyStats.ps1 -ServerName FS01 

#Query multiple remote machines by passing an array 
.\Get-ShadowCopyStats.ps1 -ServerName FS01,FS02 

#Since it's the first parameter, you don't have to include -ServerName in the command: 
.\Get-ShadowCopyStats.ps1 FS01,FS02 

#Query multiple remote machines by passing them to the script down the pipeline 
"FS01","FS02" | .\Get-ShadowCopyStats.ps1

Get-ADComputer -Filter * -SearchBase "OU=Servers,DC=company,DC=tld" | .\Get-ShadowCopyStats.ps1 -ShowAllVolumes | Tee-Object -Variable ShadowCopyStats 
$ShadowCopyStats | Select * | Export-Csv -NoTypeInformation .\ShadowCopyStats.csv

Or this one...

Get Remote Shadow Volume Information With Powershell

Gather the remote shadow volume information for one or more systems using wmi, alternate credentials, and multiple runspaces. Function supports custom timeout parameters in case of wmi problems and returns shadow volume information, shadow copies, their providers, and settings.

https://gallery.technet.microsoft.com/scriptcenter/Get-Remote-Shadow-Volume-e5a72619

RemoteShadowCopyInformation -ComputerName 'Server2' -Credential $cred).ShadowCopyVolumes 

Upvotes: 2

Related Questions