使用 Powershell 备份 Windows

cnc*_*ral 5 windows backup powershell

我编写了以下 Powershell 脚本来对我的 Windows Server 2008 R2 机器执行一次性备份。这个想法是对不同的外部驱动器执行每周备份,并安排脚本从任务计划程序运行。

Import-Module ServerManager
Add-PSSnapin Windows.ServerBackup

$backup = Get-WBPolicy
$weekly = New-WBPolicy

Add-WBVolume -POLICY $weekly -VOLUME $backup.VolumesToBackup

$inc1 = NEW-WBFileSpec -FileSpec "C:\"
$inc2 = NEW-WBFileSpec -FileSpec "D:\"
$incs = $inc1,$inc2
Add-WBFileSpec -POLICY $weekly -fileSpec $incs

$disk = WBDisk | where{$_.DiskName -EQ "Seagate Backup+ Desk USB Device"}
$target = New-WBBackupTarget -DISK $disk
Add-WBBackupTarget -POLICY $weekly -TARGET $target

Add-WBBareMetalRecovery -POLICY $weekly
Set-WBVSSBackupOptions -POLICY $weekly -VSSFULLBACKUP

Start-WBBackup -POLICY $weekly
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Start-WBBackup : Object reference not set to an instance of an object.
At C:\Users\ejb\Documents\Scripts\WeeklyBackup.ps1:21 char:15
+ Start-WBBackup <<<<  -POLICY $weekly
    + CategoryInfo          : NotSpecified: (:) [Start-WBBackup], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.Windows.ServerBackup.Commands.StartWBBackup
Run Code Online (Sandbox Code Playgroud)

我检查并验证了所有正确的模块、管理单元和功能都已安装/加载。

cnc*_*ral 2

我发现问题是由我设定目标的方式引起的。尽管它显示设置正确,但它没有正确绑定到我正在制定的 WBPolicy。设定目标的正确方法是:

$disk = New-WBBackupTarget -VolumePath G:
Add-WBBackupTarget -POLICY $backup -TARGET $disk
Run Code Online (Sandbox Code Playgroud)

虽然这假设附加的磁盘始终安装到 G: 盘符,但当我运行它时它工作成功。