Hashtabels sind hier eine gute Idee. aber ...
PowerShell Produziert und verarbeitet Objekt, dabei sollt man bleiben ;-)
Das Cmdlet Select-Objekt Produziert auch Objekte.
Dort kann man "berechnete Eigenschaften" verwenden. Syntax :
@{Name='Name des Properties'; Expression { Berechnung hier!}}
Die DateTime Klasse (Structure) hat statische Methoden zum Parsen von Text zu Datum!
[DateTime]::Parse() oder [DateTime]::ParseExcact()
Siehe Dokumentation der Struktur:
http://msdn.microsoft.com/de-de/library/vstudio/system.datetime.aspx
Text ist in der PowerShell IMMER ein String Objekt. Diese hat viele Methoden zum verarbeiten von Text!
Siehe Dokumentation der String Klasse!:
http://msdn.microsoft.com/de-de/library/vstudio/system.string.aspx
Ich nutze hier die Methode Substring() um einen teil herauszuschneiden.
Get-ChildItem -Path D:\Temp\Test | SELECT Name,@{name='Date';expression= { [DateTime]::ParseExact(($_.name).Substring(0,8),"yyyyMMdd",$null)}}
Du bekommst ein Objekt zurück!
In dem Property Date kannst du dein Datum abholen!
Das Fullname Property einer Datei würde ich IMMER mitnehmen dort ist der Pfad zur Datei abgelegt!
$dateMax = '{0:yyyyMMdd}' -f (Get-Date).AddDays(-30);
$mediaPath = "C:\Users\zarate_admin\Desktop\test";
$mediaBackup = "C:\Users\zarate_admin\Desktop\back";
$fileName = Get-ChildItem -Path $mediaPath | SELECT Fullname,Name,@{name='Date';expression= { [DateTime]::ParseExact(($_.name).Substring(0,8),"yyyyMMdd",$null)}}
ForEach($File in $Filename) {
Write-Host "Ausgabe der Datei"
Write-Host "Pfad = " + $File.Fullname
Write-Host "Name = " + $File.Name
Write-Host "Datum = " + $File.Date
}
P.S. Lass die dummen Semikolons am ende einer Zeile weg!
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches
PowerShell Forum (TechNet)