使用 Powershell 进行 Windows 备份

使用 Powershell 进行 Windows 备份

我编写了以下 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,磁盘将被清除并在其上创建新卷。然后将使用该卷。

相关内容