Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Ausgabe in Textdatei sollte nicht mehrzeilig sein

$
0
0

Hi zusammen,

Zuerst einmal möchte ich sagen, dass ich weiss, dass dieses Script weder professionell noch sonderlich schön geschrieben ist.
Ich bin ein absoluter Powershell-Beginner. Bitte verzeiht deshalb die unschöne Schreibweise.

Ich habe heute den Auftrag bekommen 1200 Logfiles(geben auskunft über fehlende Treiber) in ein Excel-File zu übertragen und in diesem anschliessend mit Diagrammen das ganze darzustellen. Sprich, welcher Treiber hat wie oft gefehlt etc.

Ich hab mir die Lösung so vorgestellt, dass ich die wichtigen Textstellen aus den .txt-Files auslese und in ein neues txt-file schreibe. Von die Daten in diesem möchte ich dann anschliessend von Excel aus importieren.

Ein Logfile besteht aus jeweils 11 Zeieln. Hier ein Bsp.

*******************************
Computer Details:

Manufacturer: Hewlett-Packard
Model: HP xw6600 Workstation

Hardware that's not working list

Service Tag: CZC83047TM

Description: PS/2 Compatible Mouse
Device ID: ACPI\PNP0F13\4&17AEE944&0
*******************************

Davon brauch ich die Zeilen 3,4,7,9 und 10.

$path = "\\sccm_sources\sccm_sources$\OSDErrorLogs\Missing_Drivers\2013\"
$counter = 0

$datas = @(Get-ChildItem "\\sccm_sources\sccm_sources$\OSDErrorLogs\Missing_Drivers\2013" *.txt -name) 

$arrLength = $datas.Count

$Manufacturer = (1..$arrLength)
$Model = (1..$arrLength)
$ServiceTag = (1..$arrLength)
$Description = (1..$arrLength)
$DeviceID = (1..$arrLength)
$sum = (1..$arrLength)



foreach ($element in $datas) {
    $pather = $path + $element
    $Manufacturer[$counter] = @(get-content $pather | Where-Object { $_ -like '*Manufacturer:*' })
    $Model[$counter] = @(get-content $pather | Where-Object { $_ -like '*Model:*' })
    $ServiceTag[$counter] = @(get-content $pather | Where-Object { $_ -like '*Service Tag:*' })
    $Description[$counter] = @(get-content $pather | Where-Object { $_ -like '*Description:*' })
    $DeviceID[$counter] = @(get-content $pather | Where-Object { $_ -like '*Device ID:*' })
    $sum[$counter] = $Manufacturer[$counter] + ";" + $Model[$counter] + ";" + $ServiceTag[$counter]  + ";" + $Description[$counter] + ";" + $DeviceID[$counter]
    $counter ++

}

Die Daten werden ausgelesen und in Arrays abegfüllt. Anschliessend möchte ich wie gesagt das ganze IN EINER ZEILE in eine neue Text-Datei schreiben.

Ich hab dies bis jetzt so versucht.

$sum[$counter] = $Manufacturer[$counter] + ";" + $Model[$counter] + ";" + $ServiceTag[$counter]  + ";" + $Description[$counter] + ";" + $DeviceID[$counter]

Die Semikolon sind zur vereinfachung des anschliessend Imports in Excel.

Die Ausgabe in die Text-Datei habe folgendermassen gelöst.

Add-Content C:\Users\KohlJ\Desktop\test.txt $sum[0] -encoding Unicode 

Dies ist nur zum Testen. Die Ausgabe wäre auch gleich in der Schleife, allerdings wären das jedesmal 1200 Einträge womit das Script noch länger dauern würde.

Leider erscheint der Text in der neuen Datei nun in Zeilen aufgespalten, sprich für jede Array-Variable und für jedes Semikolon wird eine neue Zeile genommen.

Ich muss das ganze allerdings auf einer Zeile haben :(

Ich hoffe ihr könnt mir helfen und danke schon mal für die Antworten :)


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>