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-Key: 294118

Url: https://administrator.de/contentid/294118

Printed on: April 24, 2024 at 10:04 o'clock

Member: TlBERlUS
TlBERlUS Jan 25, 2016 at 07:25:33 (UTC)
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
Mitglied: 114757
Solution 114757 Jan 25, 2016, updated at Jan 26, 2016 at 00:24:29 (UTC)
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
Member: Henere
Henere Jan 26, 2016 at 00:24:01 (UTC)
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.
Member: TlBERlUS
TlBERlUS Jan 26, 2016 at 07:32:04 (UTC)
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.
Mitglied: 114757
114757 Jan 26, 2016 at 07:50:15 (UTC)
Goto Top
Hatten wir vor kurzem erst hier
Robocopy Logs bearbeiten mit PowerShell
Member: Henere
Henere Jan 26, 2016 at 12:12:19 (UTC)
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 ?
Member: Henere
Henere Jan 26, 2016 at 12:13:32 (UTC)
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.
Mitglied: 114757
114757 Jan 26, 2016 updated at 12:21:37 (UTC)
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
Mitglied: 114757
114757 Jan 26, 2016 updated at 12:18:30 (UTC)
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 !!
Member: Henere
Henere Jan 26, 2016 at 12:23:10 (UTC)
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 !
Member: Henere
Henere Jan 26, 2016 at 22:35:20 (UTC)
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 ?
Member: TlBERlUS
TlBERlUS Jan 27, 2016 at 08:24:22 (UTC)
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
}
Mitglied: 114757
114757 Jan 27, 2016 updated at 11:29:12 (UTC)
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.
Member: Henere
Henere Jan 27, 2016 at 13:43:08 (UTC)
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.