Hallo zusammen,
bin neu in der Powershell Welt denke Script ist ganz simpel aber ich komme aus mangelden Kenntnissen einfach nicht weiter, folgende Herausforderung:
Ich habe ein Ordner "C:\Logfiles" inhalt von dem Ordner siehr folgendermaßen aus
Server001-perfmon.txt
Server002-perfmon.txt
Server003-perfmon.txt
Jede .txt enthält folgenden Inhalt:
_________________________________________________________________
## Memory-Counter 90% GBL_MEM_UTIL wurde entfernt
## S;GBL_MEM_UTIL;;>;90;1-5;06:00;21:00;00:10;critical;OS;Phys.
##
# zu Ueberwachenden Performance Kennwerte
S;GBL_MEM_UTIL;;>;95;1-5;06:00;21:00;00:10;critical;OS;Phys
S;GBL_MEM_UTIL;;>;98;1-5;06:00;21:00;24:00;critical;Basis;Phys
S;GBL_CPU_TOTAL_UTIL;;>;90;1-5;06:00;21:00;00:30;warning;OS;
_________________________________________________________________
Ich muss jede .txt auslesen und nur Einträge die mit "S" anfangen rausfiltern und nicht die Einträge mit "#", das ganze dann in eine .csv ausgeben!
Schwierigkeit daran ist Servernamen "Server001-perfmon.txt" raus zu lesen und zu den Einträgen mit "S" zuzuordnen natürlich aus der richtigen .txt. Ergebnis sollte folgender maßen aussehen:
_________________________________________________________________
Server001;S;GBL_MEM_UTIL;;>;95;1-5;06:00;21:00;00:10;critical;OS;Phys
Server001;S;GBL_MEM_UTIL;;>;98;1-5;06:00;21:00;24:00;critical;Basis;Phys
Server001;S;GBL_CPU_TOTAL_UTIL;;>;90;15;06:00;21:00;00:30;warning;OS;
Server002;S;GBL_MEM_UTIL;;>;95;1-5;06:00;21:00;00:10;critical;OS;Phys
Server002;S;GBL_MEM_UTIL;;>;98;1-5;06:00;21:00;24:00;critical;Basis;Phys
Server002;S;GBL_CPU_TOTAL_UTIL;;>;90;15;06:00;21:00;00:30;warning;OS;
Server003;S;GBL_MEM_UTIL;;>;95;1-5;06:00;21:00;00:10;critical;OS;Phys
Server003;S;GBL_MEM_UTIL;;>;98;1-5;06:00;21:00;24:00;critical;Basis;Phys
Server003;S;GBL_CPU_TOTAL_UTIL;;>;90;15;06:00;21:00;00:30;warning;OS;
_________________________________________________________________
Ich bekomme mit meinem Script Daten aus .txt rausgefiltert allerdings weiß ich nicht wie ich die Servernamen zu den ausgelesenen Daten zuorde das ich auch weiß zu welchem Server diese Einträge gehören.
--------------------------------------------------------------------------
$filepath="C:\Logfiles"
$file="C:\Logfiles\perfmon.csv"
Get-ChildItem $filepath | Get-Content | Select-String -notmatch "#" | Out-File $file
--------------------------------------------------------------------------
Kann mir jemand bitte helfen, Danke.