如何在DPM 2012中自动标记磁带?

我有一台运行System Center Data Protection Manager 2012的备份服务器,连接到一对磁带驱动器(无库)。 当然,我也有一些磁带。 磁带旋转是手动的。

以前,DPM本身(但是服务器已经完全重build)以及其他备份软件已经使用过该磁带; 他们是不是emtpy。 但是它们不包含DPM知道和/或想要保存的数据,所以它们可以被标记为空闲而不必运行forcefreetape.ps1

将磁带放入驱动器时,需要执行清点,将其识别为导入的磁带,然后将其标记为空闲; 否则DPM将会拒绝使用它。

我如何告诉DPM自动将这些导入的磁带视为免费? 而且,当然,我不想重复使用真正的备份磁带,如果偶然的话,他们会在到期date之前将其放入驱动器,因此解决scheme应该将导入的磁带标记为免费,但不应该与真实的未过期磁带。

像往常一样,需要一些脚本…

 Import-Module DataProtectionManager $Server = Get-Content env:computername Get-DPMLibrary $Server | foreach { write-host write-host Starting inventory for library $_.UserFriendlyName $result = Start-DPMLibraryInventory -DPMLibrary $_ -DetailedInventory while (!$result.HasCompleted) { write-host -NoNewline "." sleep 1 } write-host write-host Inventory complete for library $_.UserFriendlyName write-host Setting tape in library $_.UserFriendlyName as free Get-DPMTape $_ | Set-DPMTape -Free write-host Operation completed for library $_.UserFriendlyName } 

我遇到了同样的问题。 问题是上面的答案中的脚本没有考虑到所有可能与DPM相关的设备。 上述脚本写入的方式是,首先使用设备ID为[0]的设备。 (通常分配给磁带机而不是磁带库)。 所以你必须在脚本中解决适当的设备。 您可以发出Get-DPMLibrary命令来获取所有设备的列表。

Get-DPMLibrary -DPMServerName“ yourservername

这将按照最低设备编号[0]到最高顺序列出与DPM关联的所有设备。

图书馆通常会被列为第二项,这是条目1,因为设备从0开始….

(注意$ DPMLibraryvariables的设备号和添加的代码行3)

我也删除了“ Get-DPMTape $ _ | Set-DPMTape -Free ”,这根本行不通! 我把它换成了:

$ Tape = Get-Tape -DPMLibrary $ DPMLibrary

Set-DPMTape -Tape $磁带 – 免费

注意:Set-DPMTape -Tape $ Tape -Free会产生错误。 (别惊慌)。 它与已经与保护组相关联的磁带有关。 该代码将所有的磁带标记为免费的。

(所以只需复制下面的脚本replace您的设备ID)….享受:)

 Import-Module DataProtectionManager $Server = Get-Content env:computername $DPMLibrary = get-dpmlibrary -DPMServerName $Server Get-DPMLibrary $Server | foreach { write-host write-host Starting inventory for library $DPMLibrary[2] $result = Start-DPMLibraryInventory -DPMLibrary $DPMLibrary[2] -DetailedInventory while (!$result.HasCompleted) { write-host -NoNewline "." sleep 1 } write-host write-host Inventory complete for library $DPMLibrary[2] write-host Setting tape in library $DPMLibrary[2] as free $Tape = Get-Tape -DPMLibrary $DPMLibrary Set-DPMTape -Tape $Tape -Free write-host Operation completed for library $DPMLibrary[2] } 

以下脚本将search每个联机磁带库,然后将每个过期磁带标记为空闲。 在您的DPM服务器上运行。

 $sw = [Diagnostics.Stopwatch]::StartNew() Import-Module DataProtectionManager $DPMServerName = Get-Content env:computername if (!(Connect-DPMServer $DPMServerName)) { Write-Error "Failed to connect To DPM server $DPMServerName" exit 1 } $libraryList = @() $libraryList = Get-DPMLibrary -DPMServerName $DPMServerName | where {$_.Status -eq 'Enabled'} foreach ($library in $libraryList) { write-host write-host Starting inventory for library $library.UserFriendlyName write-host "This operation can take a long time, please be patient..." $result = Start-DPMLibraryInventory -DPMLibrary $library -DetailedInventory write-host write-host Inventory complete for library $library.UserFriendlyName write-host $expiredTapeList = @(Get-Tape -DPMLibrary $library | ? {$_ -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia] -and $_.DatasetState -eq "Recyclable"}) if ($expiredTapeList.Length -gt 0) { $expiredTapeList #| Export-Csv -NoTypeInformation -Encoding UTF8 -Path $Exported_csv_path -Force Write-Host "Marking $($expiredTapeList.Length) tape(s) as free in $($library.UserFriendlyName)." foreach ($expiredTape_ in $expiredTapeList) { Write-host "Setting tape Barcode $($expiredTape_.Barcode) in $($expiredTape_.Location) as free." Set-Tape -Tape $expiredTape_ -Free } } else {Write-Host "No Expired Tapes were Found in $($library.UserFriendlyName)" -ForegroundColor Red} } $sw.Stop() Write-Host "`n Total job running time ...." $sw.Elapsed