Milan1899 0 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Hallo zusammen Ich habe folgendes anliegen. Ich habe eine Liste von Computern, also im C:\Temp\pc.txt PC001 PC002 PC003 etc aufjedem dieser PCs befindet sich ebenfalls im C:\Temp die Datei convert.ini, von dieser Datei müssten jeweils die Zeilen die mit Rem beginnen in ein seperates Dokument geschrieben werden(C:\User\Test\Desktop\dok.txt). Also ein Dokument für alle PCs. Ich bekomme das einfach nicht hin, dass die PC in der Liste abgearbeitet werden und dann noch in das Dokument geschrieben werden. Kann mir da jemand helfen? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Wie sieht denn dein Ansatz aus? Wo hängst du? Zum Dateien einlesen hilft get-content und zum schreiben add-content oder out-file -append. Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Das habe ich bis jetzt gemacht und es funktioniert auch soweit, nur weiss ich nicht wie ich das mit der Liste auch noch hinbringe. $filepath=Get-Childitem "c:\Temp\Convert.ini" $ausgabe="C:\Users\Test\Desktop\dok.txt" foreach($file in $filepath){ foreach($line in (get-content $file.FullName)){ if($line -like 'REM*'){ $server + ';' + $line| Out-File $ausgabe -Append } } } cls Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Du musst die PC Liste einlesen und eine Schleife erstellen und für jeden Rechner die Datei auslesen. foreach($rechner in (Get-Content C:\Temp\pc.txt)){ foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){ # [...] Dein Doing }} Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Danke für die schnelle Antwort Ich habe das jetzt mal so gemacht foreach($rechner in (Get-Content C:\Temp\pc.txt)){ foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){ #$filepath=Get-Childitem "c:\Temp\Convert.ini" $ausgabe="C:\Users\Gar\Desktop\welp.txt" foreach($file in $filepath){ foreach($line in (get-content $file.FullName)){ if($line -like 'REM*LP*'){ $server + ';' + $line| Out-File $ausgabe -Append } } } } } Jedoch werden nur die Einträge vom lokalen PC eingetragen, wenn ich jetzt z.B drei PCs in der pc.txt liste habe dann werden einfach die Einträge vom lokalen PC dreimal angezeigt, obwohl in den anderen Convert.ini Files etwas anderes steht. Ist in meinem script etwas falsch? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Ja. Du hast viel zu viel drin. Die Zeile 2 von mir (foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){) holt den Inhalt der Datei vom Client. Du brauchst nur noch $ausgabe="C:\Users\Gar\Desktop\welp.txt" (das vor dem Teil von mir am besten) und if($line -like 'REM*LP*'){ $server + ';' + $line| Out-File $ausgabe -Append und die Klammer zumachen. Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Also wenn ich es richtig verstanden habe sollte es nun so aussehen?! $ausgabe="C:\Users\Gar\Desktop\welp.txt" foreach($rechner in (Get-Content C:\Temp\pc.txt)){ foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){ if($line -like 'REM*LP*'){ $server + ';' + $line| Out-File $ausgabe -Append } } } Das Problem jetzt es schreibt gar nichts mehr also das file wird gar nicht mehr erstellt Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Dann musst du den Fehler suchen. Gib mal zwischen drin Debugmeldungen aus, damit du siehst was passiert. Z.b.: if($line -like 'REM*LP*'){ $server + ';' + $line| Out-File $ausgabe -Append $line | write-host -foregroundcolor green }else{ $line | write-host -foregroundcolor red } oder nach foreach($rechner in (Get-Content C:\Temp\pc.txt)){ fügst du test-path \\$rechner\c$\Temp\Convert.ini ein, damit du siehst ob die Verbindung zum Client klappt und die Datei existiert. Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Hab das jetzt gemacht also beim Debugging fällt nichts besonderes auf. Die Pfade sind alle erreichbar lediglich beim write-host-forgroudcolor werden die PCs rot angezeigt, was genau heisst das? Die Verbindung zu den Hosts ist ja vorhanden. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Steht der PC Name in rot oder grün da? Das sollte nicht sein. Da sollte die Zeile aus der Textdatei stehen. Poste einmal die Ausgabe von: $rechner = 'Bitte_einen_Rechner_Aus_der_Txt_datei_eintragen' foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){ if($line -like 'REM*LP*'){ $server + ';' + $line| Out-File $ausgabe -Append $line | write-host -foregroundcolor green }else{ $line | write-host -foregroundcolor red } } Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Das ist die Ausgabe PS C:\Temp> C:\Temp\script.ps1 \\A50243\c$\Temp\Convert.ini Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Mai 2013 Melden Teilen Geschrieben 22. Mai 2013 Ahhh. Sorry ich sehe gerade das das mein Fehler ist. foreach($line in (Get-Childitem \\$rechner\c$\Temp\Convert.ini)){ muss natürlich foreach($line in (Get-Content \\$rechner\c$\Temp\Convert.ini)){ heißen. 1 Zitieren Link zu diesem Kommentar
Milan1899 0 Geschrieben 22. Mai 2013 Autor Melden Teilen Geschrieben 22. Mai 2013 Yess es funktioniert vielen Dank für die Hilfe!! :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.