SCDPM abgelaufene Tapes als Frei markieren PowerShell

PowerShellHeute mal wieder ein PowerShell Script für den SCDPM.

Diesmal handelt es sich um ein Script, welches alle abgelaufenen Tapes als “Frei” markiert und somit wieder beschreibbar macht.

Sehr nützlich dies einmal täglich am DPM Server laufen zu lassen, somit müsst ihr euch nicht selbst darum kümmern.

Kommen wir zum Script und zum Ablauf.

Das Script

Unser DPM Server hat momentan 2 abgelaufene Tapes.

image

Nun kommen wir zu unserem Script, diese besteht wieder mal aus der Definition des DPM Servers und dem Import des DPM Modules.

#Kann so belassen werden wenn das Script am DPM Server ausgeführt wird, ansonsten den Hostnamen eintragen
$DPMServerName=”$env:COMPUTERNAME”

#Holt sich aus der Registry den Pfad der SCDPM installation und importiert das PS-Modul, funktioniert nur ab SCDPM 2012
$installPath = (Get-ItemProperty “HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Setup” “UIInstallPath”).UIInstallPath
$dpmModuleFullPath = $installPath + “Modules\DataProtectionManager\DataProtectionManager.psd1”
Import-Module $dpmModuleFullPath

Danach testen wir ob der DPM Server auch verfügbar ist, sollte dies nicht der Fall sein wird das Script beendet.

#Test ob der DPM Server verfügbar ist
if (!(Connect-DPMServer $DPMServerName))
{
Write-Error “Failed to connect To DPM server $DPMServerName”
exit 1
}

Danach holen wir uns eine Liste aller Libraries die der DPM kennt, und prüfen jedes Tape ob dies abgelaufen ist, ist dies der Fall wird es als Frei markiert, zusätzlich gibt’s noch einen nette Ausgabe

$LibraryList = Get-DPMLibrary -DPMServerName $DPMServerName
foreach ($library in $LibraryList)
{
$expiredTapeList = @(Get-Tape -DPMLibrary $library |
? {$_ -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia] -and

$_.DatasetState -eq “Recyclable”})
if ($expiredTapeList.Length -gt 0)
{
Write-Host “Marking $($expiredTapeList.Length) tape(s) as free in $($library.UserFriendlyName).”
Set-Tape -Tape $expiredTapeList -Free
$expiredTapeList | select Location
}

}

Ich habe das Script jetzt mal auf dem betroffenen DPM Sever ausgeführt und bekomme folgende Ausgabe.

image

Das sind genau die 2 Tapes die auf dem ersten Bild als abgelaufen markiert waren.

Jetzt folgt die Kontrolle im DPM ob diese 2 Tapes nun auch wirklich als Frei markiert sind.

image

Hat funktioniert, das ganze Script könnt ihr nun als Task am DPM Server laufen lassen.

 

[wpdm_file id=9]

Michael Seidl aka Techguy

10 thoughts on “SCDPM abgelaufene Tapes als Frei markieren PowerShell”

  1. Hey Michael,

    Das fetzt. Leider steh ich noch voll am Anfang mich ernsthafter mit PS zu beschäftigen und benutze nur Vorlagen wie deine.

    Ich suche eines, bei dem ich einen spezifischen Slot der noch nicht abgelaufen ist, “forced” löschen/as free markieren kann.
    Ich habe zum testen oder im Fehlerfalle ab und an Tapes die nur zu ein paar MB gefüllt sind und ich nicht unverzüglich in den Pool zurück schieben kann.
    Aktuell zum Beispiel auch ein Tape, das versehentlich erst zum Ende nächsten Jahres abläuft.

  2. Hallo Michael,

    In Zeile 23 steht ein überflüssiger Eintrag:

    $DPMServerName = “svphwedp02”

  3. Enrico Stephan

    Hey Michael,

    Kannst du mir nen Tipp geben wie ich das ganze via Task Scheduler automatisiere?

    Ich habe mich an folgende Anleitung gehalten http://www.sharepointdiary.com/2013/03/create-scheduled-task-for-powershell-script.html

    Leider bekomme ich diverse Fehlermeldungen aber nie 0x0.
    Ich habe verschiedenen Benutzer inklusive meines eigenen benutzt mit dem ich es “manuell” laufen lassen kann.

    Da ich auch nicht weiß wie es debuggen kann und im Ereignislos nichts zu sehen ist, steh ich ziemlich doof da. 😉

  4. Enrico Stephan

    Das ist kuuhl. Ich schaue mir das nächste Woche an und probiere es aus. Vielen Dank. 😉

Leave a Comment

Your email address will not be published. Required fields are marked *

*