Powershell Ausgabe von Get-Childitem Where-Object incl. Dateipfad?
Hallo,
ich such mir grade ein Powershell Script für eine Serverdatensicherung zusammen.
Klappt soweit auch ganz gut, allerdings hab ich da nen hänger und komm nicht weiter.
Ich möchte die zuletzt erstellte ntbackup .log Datei per Email verschicken.
$backuplog = Get-ChildItem "C:\Dokumente und Einstellungen\Benutzername\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data" | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-45)}
In die Variable $Backuplog wird leider nur der Dateiname geschrieben, sodass eine spätere Übergabe der Variable mangels Pfadangabe nicht funktioniert.
$Att = new-object Net.Mail.Attachment($backuplog)
.
.
.
$Mail.Attachments.Add($Att)
Die Ausgabe des Scripts meldet dann Fehler:
New-Object : Ausnahme beim Aufrufen von ".ctor" mit 1 Argument(en): "Die Datei
"C:\Dokumente und Einstellungen\Benutzername\backup08.log" konnte nicht gefunden werden."
Es wird also nur der Dateiname in die Variable geschrieben.. ist ja logisch... aber leider fehlen mir die PS Kenntnisse um dies zu ändern.
Für eine Korrektur der Minutenwerte in "zuletzt geschriebene Datei" bin ich auch dankbar, da ich ja nur die letzte brauche und das mit den Minuten halt auch funktioniert aber bestimmt nicht best practice ist.
Für Programmierer ist dies bestimmt kein Problem, für mich als Script Laien jedoch schon.
Thx im voraus!
ich such mir grade ein Powershell Script für eine Serverdatensicherung zusammen.
Klappt soweit auch ganz gut, allerdings hab ich da nen hänger und komm nicht weiter.
Ich möchte die zuletzt erstellte ntbackup .log Datei per Email verschicken.
$backuplog = Get-ChildItem "C:\Dokumente und Einstellungen\Benutzername\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data" | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-45)}
In die Variable $Backuplog wird leider nur der Dateiname geschrieben, sodass eine spätere Übergabe der Variable mangels Pfadangabe nicht funktioniert.
$Att = new-object Net.Mail.Attachment($backuplog)
.
.
.
$Mail.Attachments.Add($Att)
Die Ausgabe des Scripts meldet dann Fehler:
New-Object : Ausnahme beim Aufrufen von ".ctor" mit 1 Argument(en): "Die Datei
"C:\Dokumente und Einstellungen\Benutzername\backup08.log" konnte nicht gefunden werden."
Es wird also nur der Dateiname in die Variable geschrieben.. ist ja logisch... aber leider fehlen mir die PS Kenntnisse um dies zu ändern.
Für eine Korrektur der Minutenwerte in "zuletzt geschriebene Datei" bin ich auch dankbar, da ich ja nur die letzte brauche und das mit den Minuten halt auch funktioniert aber bestimmt nicht best practice ist.
Für Programmierer ist dies bestimmt kein Problem, für mich als Script Laien jedoch schon.
Thx im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179228
Url: https://administrator.de/forum/powershell-ausgabe-von-get-childitem-where-object-incl-dateipfad-179228.html
Ausgedruckt am: 05.04.2025 um 13:04 Uhr
5 Kommentare
Neuester Kommentar
Moin Moin
Wenn du den Pfad kennst schreib ihn doch auch in eine variable. Etwa so
Das ganze ist natürlich ungetestet.
Gruß L.
Wenn du den Pfad kennst schreib ihn doch auch in eine variable. Etwa so
$backuppath = "C:\Dokumente und Einstellungen\Benutzername\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data"
$backuplog = Get-ChildItem $backuppath | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-45)}
...
$Att = new-object Net.Mail.Attachment($backuppath\$backuplog)
Das ganze ist natürlich ungetestet.
Gruß L.
Zitat von @Knorkator:
Mach ich.. vielleicht hat ja noch jemand nen Tipp, wie ich anstelle der .AddMinutes(-45)} gegen eine "zuletzt
geschriebene" Datei austauschen kann.
Mach ich.. vielleicht hat ja noch jemand nen Tipp, wie ich anstelle der .AddMinutes(-45)} gegen eine "zuletzt
geschriebene" Datei austauschen kann.
Versuch mal folgendes:
Get-ChildItem $backuppath -Filter *.log | Sort LastWriteTime -desc | Select -First 1