Der Code (unten) stammt aus einem Powershell-Skript, wo ich versuche, nach der Existenz von zwei verschiedenen Verzeichnissen zu suchen. Wenn das Verzeichnis existiert, soll es ein Remove-Item machen, um alle darunter liegenden Dateien und Ordner zu löschen.Test-Pfad in Powershell-Skript
Allerdings, wenn ich das Skript ausführen ich folgende Ausgabe:
Was: Der Vorgang "Datei entfernen" für das Ziel "\ server1 \ c \ windows $ \ propatches \ Patches \ WindowsServer2003-KB2621440.exe" .
Was ist, wenn: Operation "Remove File" auf Ziel "\ server1 \ c $ \ windows \ propatches \ patches \ WindowsServer2003-KB2641653.exe".
Remove-Item: Ein Objekt im angegebenen Pfad \ server1 \ c $ \ winnt \ propatches \ patches existiert nicht. unter C: \ Dokumente und Einstellungen \ Logonuser \ Desktop \ GetPCNames.ps1: 32 Zeichen: 14 + Remove-Item < < < < $ ClearPath -recurse -whatif + CategoryInfo: ObjectNotFound: (\ SEARCHMGT1 \ c $ \ winnt \ propatches \ Patches: String) [Remove-Item], IOException + FullyQualifiedErrorId: ItemDoesNotExist, Microsoft.PowerShell.Commands.RemoveItemCommand
Es scheint, wie der erste Test-Pfad erkennt, dass das Verzeichnis vorhanden ist und das entfernen-Artikel läuft richtig.
Allerdings versucht der zweite Testpfad (der nicht existiert) immer noch den Befehl remove-item auszuführen, der ausfällt, weil der Pfad nicht existiert.
Ich nehme meinen Testpfad an, wenn Aussage falsch sein muss, aber ich ziehe meine Haare aus und versuche herauszufinden, was ich falsch mache. Hat jemand eine Idee, warum dies zu Fehlern führt?
foreach ($objResult in $colResults)
{
$objComputer = $objResult.Properties;
$path1 = "\\" + $objComputer.name + "\c$\windows\propatches\patches\"
$path2 = "\\" + $objComputer.name + "\c$\winnt\propatches\patches\"
#check to see if it is missing
if ((Test-Path -path $path1))
{
$clearpath = $path1 + "*"
Remove-Item $clearpath -recurse -whatif
}
#check to see if it is missing
if ((Test-Path -path $path1))
{
$clearpath = $path2 + "*"
Remove-Item $clearpath -recurse -whatif
}
Vielen Dank! Ich schätze, ich habe das Skript zu lange angeguckt. Das habe ich komplett übersehen! – Brad