Es gibt mal wieder eine neue Version des GetDPMTapeList Powershell Scriptes.
Diesmal mit 2 Änderungen, die mir so im täglichen Betrieb aufgefallen sind und mir die Arbeit etwas erleichtern.
Meistens nutze ich dieses Script um einem Kunden die Liste der Tapes zu übermitteln, welche er aus der Library nehmen kann.
Zusätzlich dient dieses Script der Dokumentation, zu welchem Zeitpunkt er dann diese Tapes wieder in die Library geben kann.
Da bietet sich natürlich an, die Ausgabe nach Datum zu sortieren, und genau das ist die Änderung.
Details
Um die Ausgabe zuvor zu sortieren,musste ich die Zeilen in ein Array packen und dieses dann sortieren. Danach konnte ich den Inhalt des Arrays in eine CSV Datei exportieren.
Zuerst musste ich eine neue Variable erstellen mit dem Namen Array und diese als Array definieren.
$Array=@()
Danach wird im Magic Teil dieses Array mit dem Ergebnis befüllt.
$obj = New-Object -TypeName PSObject $obj | Add-Member Noteproperty -Name Expire -value $ExpDate.Date $obj | Add-Member Noteproperty -Name Tape -value $Tape.DisplayString $obj | Add-Member Noteproperty -Name Slot -value $Tape.Location.Id $obj | Add-Member Noteproperty -Name Barcode -value $Tape.Barcode.Value $Array+=$obj
Zum Schluss noch das Array nach Datum sortieren und in die CSV exportieren
$Array | Sort expire -Verbose | Export-Csv -Path $File -Encoding ascii -NoTypeInformation
Das Script
Hier noch das gesamte Script in der Version 1.2 inkl. ChangeLog
######################################################## # Name: GetDPMTapeList.ps1 # Creator: Michael Seidl aka Techguy # CreationDate: 17.01.2014 # LastModified:23.01.2014 # Version: 1.1 # Doc: https://www.techguy.at/tag/getdpmtapelist/ # # Description: Read all Tapes in Library which are ready # to take Offiste, get the Expiration Date an Epxort this # Information in a CSV file # # Set the File Name # # Version 1.2 - CHANGE: Input of Tapes to an Array # CHANGE: Sort Ouput by Expire Date # # Version 1.1 - FIX: Format the Output ExpireDate # - CHANGE: DPMServer takes local Computername # - CHANGE: File will be saved at Script Location # Version 1.0 - RTM ######################################################## # # www.techguy.at # www.facebook.com/TechguyAT # www.twitter.com/TechguyAT # michael@techguy.at ######################################################## #Import Modules Import-Module dataprotectionmanager #Variables $DPMServer="$env:COMPUTERNAME" $FileName="DPMTapeList.csv" $Array=@() #Settings $Library=Get-DPMLibrary -DPMServerName $DPMServer $Tapes=Get-Tape -DPMLibrary $Library | where {$_.IsOffsiteReady -eq $True} $Path = $MyInvocation.MyCommand | Split-Path $File=$Path+"\"+$FileName #Delete File and create new one if (Test-Path $File) {Remove-Item $File} "Expire;Name;Slot;Barcode"| Out-File -FilePath $File -Append #Magic foreach ($Tape in $Tapes) { $RPs=Get-RecoveryPoint -Tape $Tape foreach ($RP in $RPs) { $ExpDate = Get-Date if ($ExpDate -lt $RP.recoverysourcelocations[0].expirydate) { $ExpDate = $RP.recoverysourcelocations[0].expirydate } } $obj = New-Object -TypeName PSObject $obj | Add-Member Noteproperty -Name Expire -value $ExpDate.Date $obj | Add-Member Noteproperty -Name Tape -value $Tape.DisplayString $obj | Add-Member Noteproperty -Name Slot -value $Tape.Location.Id $obj | Add-Member Noteproperty -Name Barcode -value $Tape.Barcode.Value $Array+=$obj } $Array | Sort expire -Verbose | Export-Csv -Path $File -Encoding ascii -NoTypeInformation
Alle Informationen und Updates zu diesem Script erhaltet ihr unter diesem Link:
https://www.techguy.at/tag/getdpmtapelist/
Den Download zum aktuellen Script findet ihr in der TechNet Gallery: http://gallery.technet.microsoft.com/DPM-Tape-List-with-1f9fc697
Bitte nehmt euch die Zeit und bewertet meine Downloads in der TechNet Gallery, würde mich sehr freuen.
Hier findet ihr alle meine Download in der TechNet Gallery: http://gallery.technet.microsoft.com/site/search?f%5B0%5D.Type=Tag&f%5B0%5D.Value=TechguyAT&f%5B0%5D.Text=TechguyAT
Michael Seidl aka Techguy
Hi, tolles Skript. Ich habe es ein wenig optimiert, da die Suche zu teuer ist 😉
$RPs=Get-RecoveryPoint -Tape $Tape
foreach ($RP in $RPs) {
$ExpDate = Get-Date
if ($ExpDate -lt $RP.recoverysourcelocations[0].expirydate) {
$ExpDate = $RP.recoverysourcelocations[0].expirydate
}
}
Kann durch…
$ExpDate = (Get-RecoveryPoint -Tape $Tape).recoverysourcelocations.expirydate | Sort-Object -Descending | Select-Object -First 1
…ersetzt werden
LG Marc
Hallo,
danke dir, wird in der nächsten Version beachtet.