henere
Goto Top

Powershell macht mich wahnsinnig

Hallo Gemeinde,

ich hätte da gerne mal ein Problem. face-sad

Kurzinfo: Ich erstelle einen Job mit Robocopy, dessen Output dann per Mail verschickt werden soll.
Läuft auf Win2012 R2

CMD: robocopy Quelle Ziel > RClog.txt

Führe ich das per Hand in einer PS aus, dann habe ich anschließend den Output in der Datei RClog.txt

Mit send-mailmessage -Attachments RClog.txt kann ich das Ganze verschicken, das funzt auch soweit.

Nun möchte ich aber ein Logfile mit allen Aktivitäten auf dem Server erzeugen, nun habe ich ein:

more D:\BackupLog\RClog.txt >> Loggesamt.txt in das script eingefügt.

Jedoch kommt in der Powershell(ISE) NICHTS in die Datei Loggesamt.txt face-sad

PS C:\Users\Administrator> more D:\BackupLog\RClog.txt

PS C:\Users\Administrator>

Führe ich das Command in der "echten" Powershell auf der Workstation aus, dann bekomme ich den gewünschten Output:
Z:\ ist ein gemapptes Netzlaufwerk, was auf D: vom Server zeigt. Aus Datenschutzgründen gekürzt.

PS C:\Users\Administrator> more Z:\BackupLog\Loggesamt.txt

ROBOCOPY :: Robustes Dateikopieren f?r Windows

Gestartet: Montag, 25. Januar 2016 02:13:16
Quelle : D:\Test1\XXXXXXX\
Ziel : D:\Test2\XXXXXXX\

Dateien : *.*

Optionen: *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:1000000 /W:30


0 D:\Test1\
5 D:\Test1\
7 D:\Test1\
5 D:\Test1\
1 D:\Test1\
1 D:\Test1\
1 D:\Test1\
1 D:\Test1\
1 D:\Test1\
1 D:\Test1\
2 D:\Test1\
1 D:\Test1\
1 D:\Test1\
3 D:\Test1\
0 D:\Test1\



Insgesamt KopiertsbersprungenKeine sbereinstimmung FEHLER Extras
Verzeich.: 15 0 0 0 0 0
Dateien: 30 0 30 0 0 0
Bytes: 1.40 m 0 1.40 m 0 0 0
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Beendet: Montag, 25. Januar 2016 02:13:17

Wo bitte, mache ich den Fehler ?

Danke und Grüße !

Content-ID: 294118

Url: https://administrator.de/forum/powershell-macht-mich-wahnsinnig-294118.html

Ausgedruckt am: 07.04.2025 um 05:04 Uhr

TlBERlUS
TlBERlUS 25.01.2016 um 08:25:33 Uhr
Goto Top
Zitat von @Henere:

Hallo Gemeinde,
Guten Morgen,
ich hätte da gerne mal ein Problem. face-sad
du hättest gerne eins?
Kurzinfo: Ich erstelle einen Job mit Robocopy, dessen Output dann per Mail verschickt werden soll.
Ok, sollte machbar sein
CMD: robocopy Quelle Ziel > RClog.txt
Warum in der CMD?
Nun möchte ich aber ein Logfile mit allen Aktivitäten auf dem Server erzeugen
Heißt das du willst den Inhalt aller erzeugten txt-Dateien versenden?
more D:\BackupLog\RClog.txt >> Loggesamt.txt in das script eingefügt.
was soll das "more" machen?
Jedoch kommt in der Powershell(ISE) NICHTS in die Datei Loggesamt.txt face-sad

PS C:\Users\Administrator> more D:\BackupLog\RClog.txt

PS C:\Users\Administrator>

Führe ich das Command in der "echten" Powershell auf der Workstation aus, dann bekomme ich den gewünschten Output:
Z:\ ist ein gemapptes Netzlaufwerk, was auf D: vom Server zeigt. Aus Datenschutzgründen gekürzt.

Wo bitte, mache ich den Fehler ?
Das kann man dir besser sagen, wenn du dein Skript zusammenhängend und mit Code-Tags postest.

Grüße,

Tiberius
114757
Lösung 114757 25.01.2016, aktualisiert am 26.01.2016 um 01:24:29 Uhr
Goto Top
Moin.
more D:\BackupLog\RClog.txt >> Loggesamt.txt in das script eingefügt.
Das kommt davon wenn man in der modernen Powershell noch an den alten DOS-Leichen fest hält.

Du solltest dir mal die entsprechenden Powershell-CMDLets ansehen:
gc 'D:\BackupLog\RClog.txt' | out-file 'Loggesamt.txt' -Append
oder
gc 'D:\BackupLog\RClog.txt' | Add-Content 'Loggesamt.txt'
usw.

Gruß jodel32
Henere
Henere 26.01.2016 um 01:24:01 Uhr
Goto Top
Danke euch, aber so wie ich mir das dachte geht es nicht.
Ich wollte den Output von 2 Robocopyjobs in eine Datei packen und diese per Mail verschicken.
Aber bei der Menge an Dateien, wird das Log zu groß und unübersichtlich.
Ich muss mir was anderes einfallen lassen.
TlBERlUS
TlBERlUS 26.01.2016 um 08:32:04 Uhr
Goto Top
Wenn es dir nur auf bestimmte Zeilen in dem Logs ankommt könntest du mit
gc 'D:\BackupLog\RClog.txt' | select-string 'WasAuchImmer'  


arbeiten.
114757
114757 26.01.2016 um 08:50:15 Uhr
Goto Top
Hatten wir vor kurzem erst hier
Robocopy Logs bearbeiten mit PowerShell
Henere
Henere 26.01.2016 um 13:12:19 Uhr
Goto Top
Das einzige was mich interessiert hätte, wäre das Ergebnis gewesen, also die Zusemmenfassung am Ende. Aber mit GC kann ich wohl nicht wie mit Less (Unix) filtern, dass er mir nur die letzten x Zeilen anzeigt ?
Henere
Henere 26.01.2016 um 13:13:32 Uhr
Goto Top
Zitat von @114757:

Hatten wir vor kurzem erst hier
Robocopy Logs bearbeiten mit PowerShell

Naja, Suchen und ersetzen, aber das ist nicht das, was ich hätte haben wollen.
Danke Dir tropsdem.
114757
114757 26.01.2016 aktualisiert um 13:21:37 Uhr
Goto Top
gc 'c:\datei.log' -tail 10
oder
gc 'c:\datei.log' | select -last 10

Da kannst du aber auch schön mit den Robocopy-Parametern steuern was ausgegeben wird....

Hiermit z.B. wird von Robocopy nur die Zusammenfassung am Ende ausgegeben
robocopy C:\quelle C:\ziel /E /NP /NC /NS /NDL /NFL /NJH
114757
114757 26.01.2016 aktualisiert um 13:18:30 Uhr
Goto Top
Zitat von @Henere:
Naja, Suchen und ersetzen, aber das ist nicht das, was ich hätte haben wollen.
Danke Dir tropsdem.
Mit Regex geht alles face-wink !!
Henere
Henere 26.01.2016 um 13:23:10 Uhr
Goto Top
Zitat von @114757:

> gc 'c:\datei.log' -tail 10
> 
oder
> gc 'c:\datei.log' | select -last 10
> 
Da kannst du aber auch schön mit den Robocopy-Parametern steuern was ausgegeben wird....

Supi Danke !
Henere
Henere 26.01.2016 um 23:35:20 Uhr
Goto Top
Soweit läuft das jetzt bei mir... hätte aber gerne noch ein Problem.
WBAdmin erstellt ja brav Logfiles, allerdings mit dem Namensschema Backup_Error-26-01-2016_21-00-38.log
Ich würde gerne nach dem Backup die letzten Logfiles mit der Info, Backup fertig per Mail verschicken.
Dazu nutze ich das send-mailmessage, was auch geht, auch mit Attachment, aber wie finde ich den Namen der neuesten Logfiles raus und kann diese dann in eine Datei zusammenschieben, daß ich diese auch per Mail verschicken kann ?

Beispielnamen für heute:
Backup_Error-26-01-2016_21-00-38.log
Backup-26-01-2016_21-00-38.log

Ich würde jetzt mit get-date arbeiten, das im Format tt-mm-jjjj in eine Variable stecken und dann per
gc 'backup_$Variable*' | Add-Content 'backuplog.txt'
versuchen das in eine Datei zu packen, deren Namen ich kenne und somit verschicken kann.

Oder geht das eleganter ?
TlBERlUS
TlBERlUS 27.01.2016 um 09:24:22 Uhr
Goto Top
Zitat von @Henere:
Oder geht das eleganter ?
Ich würde vermutlich eher mit Creationtime arbeiten.
$path = "c:\test"  
$files = gci $path 
$datetoday = get-date
foreach ($f in $files) {
$f.CreationTime
}
114757
114757 27.01.2016 aktualisiert um 12:29:12 Uhr
Goto Top
Zitat von @Henere:

Oder geht das eleganter ?
gci 'c:\ordner\*.log' | ?{$_.CreationTime.Date -eq (Get-Date).Date} | %{gc $_.Fullname | add-content 'c:\backuplog.txt'}  

Wie wärs mal mit nem Powershell Kurs ?

p.s. Thread ist gelöst also bitte behandele ihn auch so. Danke.
Henere
Henere 27.01.2016 um 14:43:08 Uhr
Goto Top
Zitat von @114757:

Zitat von @Henere:

Oder geht das eleganter ?
> gci 'c:\ordner\*.log' | ?{$_.CreationTime.Date -eq (Get-Date).Date} | %{gc $_.Fullname | add-content 'c:\backuplog.txt'}  
> 

Wie wärs mal mit nem Powershell Kurs ?

p.s. Thread ist gelöst also bitte behandele ihn auch so. Danke.

Danke für die Vorschläge.

Kurs ... ich bin in Frührente und betreibe das nur noch Hobbymäßig, so viel Geld ist da nicht übrig für Kurse. face-sad

p.s. Thread ist gelöst also bitte behandele ihn auch so. Danke.

Ok, dann mach ich neue auf, wenns nochmal hakt.