italianstallion 11 Geschrieben 19. Februar 2015 Melden 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
Sunny61 833 Geschrieben 19. Februar 2015 Melden 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
italianstallion 11 Geschrieben 20. Februar 2015 Autor Melden 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?
jaku 0 Geschrieben 20. Februar 2015 Melden 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...
Sunny61 833 Geschrieben 20. Februar 2015 Melden 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.
italianstallion 11 Geschrieben 20. Februar 2015 Autor Melden 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!
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden