italianstallion 11 Geschrieben 19. Februar 2015 Melden Teilen Geschrieben 19. Februar 2015 Hi Leute, Spezialauftrag: Ich muss in einem PS Skript unter anderem folgendes tun...an diesem Teil scheitere ich gerade: - Zig Maschinen schreiben jeder jeweils zwei Dateien in ein Pool Verzeichnis hostname.out hostname.rdy - Nun kommt mein Skript und soll nachsehen ob immer die Datei-Pärchen da sind Falls ja: Eine Subroutine starten Falls nein: Nichts tun Versucht habe ich es mich mit "get-childitem"...das ist - glaube ich - auch richtig, aber das vergleichen ohne zu wissen was genau drin stehen könnte? Es können nämlich Maschinen hinzukommen und wegfallen...deshalb das get-childitem. Ideen? Danke und Grüße Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 19. Februar 2015 Melden Teilen Geschrieben 19. Februar 2015 In diesen Artikel solltest Du weiteres Infomaterial finden: http://www.windowspro.de/script/test-path-powershell-pruefen-ob-eine-datei-existiert http://ps.stefanrehwald.de/?p=43 Zitieren Link zu diesem Kommentar
italianstallion 11 Geschrieben 20. Februar 2015 Autor Melden Teilen Geschrieben 20. Februar 2015 Hi Sunny, danke, Test-Path kenne ich und verwende ich auch. Mir ging es eher um die Logik, da ich nicht weiß welche HOSTNAMEN drin landen werden. Ich kenne nur die Endungen und weiß es muss pro Hostname eine rdy und eine out Dateo da sein. Deshalb muss ich vorher mit get-childitem einlesen und dann vergleichen o.ä.? Oder? Zitieren Link zu diesem Kommentar
jaku 0 Geschrieben 20. Februar 2015 Melden Teilen Geschrieben 20. Februar 2015 Ich weiß nicht ob es ein völlig falscher Ansatz ist ... aber ich würde alle Namen mit .out in ein Array schreiben und dann überprüfen ob es für jeden noch die andere Endung gibt... Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 20. Februar 2015 Melden Teilen Geschrieben 20. Februar 2015 Wenn Du den Hostnamen hast, dann kannst Du den in eine Variable packen und diese Variable benutzt Du dann zum suchen in den Dateien. Zitieren Link zu diesem Kommentar
italianstallion 11 Geschrieben 20. Februar 2015 Autor Melden Teilen Geschrieben 20. Februar 2015 Hi, Den hostnamen habe ich dann wenn ich ein get-childitem mache und mir die Dateinamen einlese, sonst nicht, da sie variabel sind. Ich habe mir allerdings überlegt, dass ich vielleicht lieber die out-files zähle und die rdy-files zähle und mit -eq vergleiche. Jetzt stoße ich grade an ein anderes Problem: get-childitem $outpath *.out | select Name Gibt mir ja alle Namen zurück. Wenn ich nun ein get-content -path $outpath\$line | Out-File -FilePath $finalout -append mache, bekomme ich folgenden Fehler ($outpath habe ich natürlich vorher definiert und der Pfad stimmt) get-content : Cannot find path '\\mydomain.de\dfs\bla\bla\SCRIPTS\bla\POOL\bla\@{Name=asdf.out}' because it does not exist. Ist das @{Name=} mein Problem? Wenn ja: Wo kommt das her? Der Pfad an sich stimmt und die Dateien liegen dort auch drin...das einzige was nicht stimmt ist das @{Name=} Danke und Grüße Ist bissel unübersichtlich...hier die ganze Schleife: if($outcount -eq $rdycount){ $allouts = get-childitem $outpath *.out | select Name foreach ($line in $allouts){ get-content -path $outpath\$line | Out-File -FilePath $finalout -append } } Jetzt ist vielleicht klar wo $line herkommt... ;) Grüße Ups...bin mir nicht sicher warum, aber so gehts: if($outcount -eq $rdycount){ $allouts = get-childitem "$outpath" *.out -name foreach ($line in $allouts){ get-content -path $outpath\$line | Out-File -FilePath $finalout -append } } Get-Childitem -name anstatt | select name Danke ertsmal an alle! 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.