我编写了以下 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
我收到以下错误:
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
我检查并确认所有正确的模块、管理单元和功能均已安装/加载。
答案1
我发现问题是由我设置目标的方式引起的。尽管它显示设置正确,但它没有正确绑定到我制定的 WBPolicy。设置目标的正确方法是:
$disk = New-WBBackupTarget -VolumePath G:
Add-WBBackupTarget -POLICY $backup -TARGET $disk
尽管这假设所连接的磁盘始终安装到 G:字母,但当我运行它时它成功运行。
答案2
我在定义一次性备份(或动态生成策略)时遇到了同样的问题。我认为...您必须使用卷(来自 Get-WBVolume 的对象)或卷路径(如果有挂载字母)。当您想要定义持久策略时,可以使用磁盘选项。当您使用磁盘(来自 Get-WBDisk 的对象)时,您必须使用 Set-Policy,磁盘将被清除并在其上创建新卷。然后将使用该卷。