Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell Pfad von Unterordnern übergeben

Frage Entwicklung Batch & Shell

Mitglied: patrick152

patrick152 (Level 1) - Jetzt verbinden

24.10.2013, aktualisiert 14:36 Uhr, 3047 Aufrufe, 4 Kommentare

Hallo,

ich habe folgendes Problem:

Ich arbeite an einem Script welches ein Laufwerk durcharbeiten soll und die Ordner in denen keine nodelete.txt Datei Vorhanden ist sollen gelöscht werden. Dafür habe ich folgenden Script:

$a = Get-ChildItem .\ -recurse | where {$_.psisContainer -eq $True}

foreach ($b in $a)
{
if (!(Test-Path -Path .$b\nodelete.txt))
{
Remove-Item .$b
}

}

und zum Testen folgende einfache Ordnerstruktur

C:\putzenTest\Ordner1
C:\putzenTest\Ordner2
C:\putzenTest\Ordner1\Unterordner1
C:\putzenTest\Ordner1\nodelete.txt
C:\putzenTest\Ordner1\Unterordner1\nodelete.txt
C:\putzenTest\Ordner2\Unterordner2
C:\putzenTest\Ordner2\nodelete.txt
C:\putzenTest\Ordner2\Unterordner2\Unterordner32
C:\putzenTest\Ordner2\Unterordner2\nodelete.txt

wende ich meine Script nun darauf an gibt es ein Problem mit den Unterordnern (hier nur die Mledung für den ersten Ordner):

Remove-Item : Der Pfad "C:\putzenTest\Unterordner1" kann nicht gefunden werden, da er nicht vorhanden ist.
In C:\putzenTest\test.ps1:8 Zeichen:3

Remove-Item $b

~~~~~~~~~~~~~~

CategoryInfo : ObjectNotFound: (C:\putzenTest\Unterordner1:String) [Remove-Item], ItemNotFoundException

FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand


anscheinend reicht er nicht den vollen Pfad weiter. Was kann man da machen?

Zum Hintergrund (evtl. hat jemand eine bessere Lösung)
Die Mitarbeiter sollen auf einem bestimmten Laufwerk die Ordner markieren die nicht gelöscht werden sollen. Durch anlegen einer nodelete.txt in dem entsprechenden Ordner.
Anschliesend soll der Script über das Laufwerk laufen und alle Ordner die keine nodelete.txt enthalten sollen gelöscht werden.

Gruß Patrick
Mitglied: 106543
24.10.2013 um 14:42 Uhr
Hi,

schonmal mit Anführungszeichen versucht ? -> ""

Grüße
Exze
Bitte warten ..
Mitglied: patrick152
24.10.2013 um 14:48 Uhr
Wenn ich um die Pfadangaben Anführungszeichen setzte kommt die selber Fehlermeldung nur das dann um den Nichtgefunden Pfad Anführungszeichen sind
Bitte warten ..
Mitglied: 106543
24.10.2013 um 14:52 Uhr
Verstehe ich nicht, sorry
Er scheint die Pfade ja richtig auszulesen, kann danach aber die Pfade nicht mehr finden, was sich für mich erstmal komisch anhör.
Ich mache mich nochmal schlau. Vielleicht kann hier auch @colinardo helfen.

Grüße
Exze
Bitte warten ..
Mitglied: colinardo
24.10.2013, aktualisiert um 21:04 Uhr
Hallo Patrick,
das kann so vom Prinzip her nicht funktionieren, denn wenn du einen Übergeordneten Ordner in dem keine 'nodelete.txt' vorhanden ist löschst und die Schleife kommt dann zu einem Unterordner des Ordners den du gerade gelöscht hast findet er diesen natürlich nicht mehr.
Mach es besser so, dass die Mitarbeiter die Ordner welche gelöscht werden sollen mit einer delete.txt markieren. Dann kannst du folgendes Script verwenden:
01.
$rootFolder = "C:\Ordner" 
02.
dir "$rootFolder\delete.txt" -recurse | ?{!($_.PSIsContainer)} | %{Remove-Item $_.DirectoryName -Recurse -Force}
Grüße Uwe
p.s. du übergibst bei Test-Path das Objekt und nicht den Pfad, wenn schon dann so:
Test-Path -Path "$($b.DirectoryName)\nodelete.txt"
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(3)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Off Topic
gelöst Fachzeitschriften als E-Book oder hardcoded? (11)

Frage von KowaKowalski zum Thema Off Topic ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...