Jump to content

Powershell Liste abarbeiten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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?

Geschrieben
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
Geschrieben

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   }}

Geschrieben

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?
Geschrieben

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.
Geschrieben

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
Geschrieben

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.
Geschrieben

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.

Geschrieben

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
}
}
Geschrieben

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.

  • Like 1
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...