bugger
Goto Top

Powershell - Datei prüfen ob vorhanden, dann löschen

Hallo,

ich habe glaube ich eine einfache Frage.
Folgenden Code ausschnitt habe ich:

foreach ($server in $server)
			{
		if ((Test-Path -Path \\$server\$destination\$var))
			{
del \\$server\$destination\$var -Force
			}
del \\$server\$destination\$var1 -Force
del \\$server\$destination\$var2 -Force
del \\$server\$destination\$var3 -Force
del \\$server\$destination\$var4 -Force
del \\$server\$destination\$var5 -Force
del \\$server\$destination2\$var -Force
del \\$server\$destination2\$var1 -Force
del \\$server\$destination2\$var2 -Force
del \\$server\$destination2\$var3 -Force
del \\$server\$destination2\$var4 -Force
del \\$server\$destination2\$var5 -Force
}

Wenn ich jetzt bei jedem $var die Test-Path Zeilen einfüge, würde er genau das machen was er sollte. Ich würde aber gerne wissen, ob es da eine elegantere Methode gibt die dann auch aufgeräumter aussieht, wobei letzteres nicht soo wichtig ist face-smile

Danke und Gruß

Content-ID: 327974

Url: https://administrator.de/contentid/327974

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

132272
Lösung 132272 30.01.2017 aktualisiert um 15:33:42 Uhr
Goto Top
Pippifax...
$var1,$var2,$var3,$var4 | ?{Test-Path "\\$server\$destination\$_"} | %{del "\\$server\$destination\$_" -Force}  
oder
$var1,$var2,$var3,$var4 | %{del "\\$server\$destination\$_" -Force -EA Ignore}  
Gruß nachfrage
Bugger
Bugger 30.01.2017 um 15:45:30 Uhr
Goto Top
Super, funktioniert einwandfrei. Vielen Dank face-smile

Macht der zweite Code das gleiche wie der erste? Das Test-Path da nicht dabei steht verwirrt mich :D
H41mSh1C0R
Lösung H41mSh1C0R 30.01.2017 um 15:54:57 Uhr
Goto Top
Ergebnis ist das gleiche, sprich das Zielverzeichnis wird auch gelöscht. Sollte es nicht da sein wird der Fehler der drauskommt einfach ignoriert "-EA Ignore".
Bugger
Bugger 30.01.2017 um 16:00:25 Uhr
Goto Top
Alles klar, vielen Dank euch beiden face-smile
Bugger
Bugger 01.02.2017 um 10:18:23 Uhr
Goto Top
Ich poste das hier auch mal in der Hoffnung, dass es noch jemand sieht :D

Kann man in einen der beiden Codes auch einen else Befehl mit einbauen?

$var1,$var2,$var3,$var4 | ?{Test-Path "\\$server\$destination\$_"} | %{del "\\$server\$destination\$_" -Force} else {"\\$server\$destination\$_ existiert nicht"}

$var1,$var2,$var3,$var4 | %{del "\\$server\$destination\$_" -Force -EA Ignore} else {"\\$server\$destination\$_ existiert nicht"}

Sowas in der Art nur halt so, dass es auch funktioniert.^^
132272
132272 01.02.2017 um 10:32:41 Uhr
Goto Top
Ich poste das hier auch mal in der Hoffnung, dass es noch jemand sieht :D
Wurde dir doch schon per PN beantwortet??!
Bugger
Bugger 01.02.2017 um 10:56:46 Uhr
Goto Top
Komisch, in meinem Posteingang ist irgendwie nichts. Und ich schrieb es hier nochmal, damit es evtl. auch anderen mit der selben Frage hilft.
132272
Lösung 132272 01.02.2017 aktualisiert um 10:59:57 Uhr
Goto Top
$var1,$var2,$var3,$var4 | %{
    $path =  "\\$server\$destination\$_"   
    if(Test-Path $path){
        del $path -Force
    }else{
       write-host "'$path' existiert nicht." -F yellow  
    }
}
Bugger
Bugger 01.02.2017 um 11:13:31 Uhr
Goto Top
Ah, so muss das aussehen.^^ Vielen Dank!