Ordner im PowerShell ausschließen {CODE_BLOCK_8}
-
Ausschluss von Ordnern bei PowerShell-Kopieroperationen mit der
Get-Item
-Funktion und dem-Exclude
-Parameter -
Ausschluss von Ordnern bei PowerShell-Kopieroperationen mit
Where-Object
undPSIsContainer
- Fazit

Im Bereich der Dateiverwaltung und Automatisierung mit PowerShell ist die Aufgabe, Dateien zu kopieren und dabei bestimmte Ordner auszuschließen, eine häufige, aber nuancierte Herausforderung. Dieser Artikel beschäftigt sich mit zwei effektiven Methoden, um diese Aufgabe zu erledigen: die Verwendung der Funktion Get-Item
mit dem Parameter -Exclude
und die Nutzung von Where-Object
mit der Eigenschaft PSIsContainer
.
Beide Methoden dienen zwar dem gleichen Zweck, nähern sich dem Problem jedoch aus unterschiedlichen Perspektiven und bieten einzigartige Vorteile.
Unser Ziel ist es, ein umfassendes Verständnis dieser Methoden, ihrer Anwendungen und der Nuancen ihrer Nutzung zu vermitteln. Durch detaillierte Erklärungen, Syntaxanalysen und praktische Beispiele wollen wir sowohl neuen als auch erfahrenen PowerShell-Anwendern die Fähigkeiten vermitteln, um Dateioperationen effizient zu verwalten und ihre Ansätze auf die spezifischen Anforderungen ihrer Arbeitsabläufe abzustimmen.
Ausschluss von Ordnern bei PowerShell-Kopieroperationen mit der Get-Item
-Funktion und dem -Exclude
-Parameter
Wir können den Befehl Copy-Item
verwenden, um die Dateien zu kopieren und dabei einen Ordner in PowerShell auszuschließen. Es gibt zwei Methoden, um Copy-Item
zu verwenden und einen Ordner auszuschließen: eine, um einen einzelnen Ordner auszuschließen, und die andere, um mehrere Ordner auszuschließen.
Die Syntax für diesen Vorgang kombiniert Copy-Item
mit Get-Item -Exclude
:
powershellCopyCopy-Item -Path (Get-Item -Path "sourcePath\*" -Exclude ('folderToExclude')).FullName -Destination "destinationPath" -Recurse -Force
Parameter:
Copy-Item
: Dieses Cmdlet kopiert Dateien und Verzeichnisse an einen neuen Speicherort.-Path
: Gibt den Pfad der zu kopierenden Elemente an. In unserem Fall wird dies vonGet-Item
bereitgestellt.Get-Item
: Ruft die Elemente vom angegebenen Speicherort ab.-Exclude
: Dieser Parameter inGet-Item
filtert Elemente heraus, insbesondere die Namen von Ordnern oder Dateien, die ausgeschlossen werden sollen.('folderToExclude')
: Der Ordnername, den Sie ausschließen möchten..FullName
: Ruft den vollständigen Pfad der Elemente ab.-Destination
: Der Pfad, an den die Elemente kopiert werden sollen.-Recurse
: Schließt den Inhalt von Unterverzeichnissen ein.-Force
: Erzwingt die Ausführung des Befehls, ohne um Bestätigung des Benutzers zu bitten.
Codebeispiel:
powershellCopyCopy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder')).FullName -Destination "destination\" -Recurse -Force
In unserem Skript beginnen wir damit, das Quellverzeichnis (C:\origin\
) auszuwählen und verwenden Get-Item
, um alle darin enthaltenen Elemente abzurufen. Die Verwendung des Sternchens (*
) fungiert hier als Platzhalter, der jedes Element im Verzeichnis darstellt.
Anschließend nutzen wir den Parameter -Exclude
, um unsere Absicht zu artikulieren, einen bestimmten Unterordner, insbesondere SubFolder
, auszuschließen. Die Verwendung der Eigenschaft .FullName
ist in diesem Kontext entscheidend, da sie den vollständigen Pfad für jedes Element abruft, mit dem wir arbeiten.
Nachdem wir diese Liste erstellt haben, die den angegebenen Ordner deutlich ausschließt, wird sie an Copy-Item
übergeben. Wir definieren dann unseren Zielort als das Zielverzeichnis (C:\destination
). Um einen umfassenden Kopiervorgang zu gewährleisten, der alle Unterverzeichnisse mit Ausnahme des Ordners, den wir ausschließen möchten, umfasst, fügen wir den Parameter -Recurse
hinzu.
Um unseren Prozess weiter zu optimieren und mögliche Unterbrechungen zu vermeiden, kommt der Parameter -Force
zum Einsatz. Er unterdrückt effektiv alle Systemaufforderungen, die andernfalls den Vorgang unterbrechen könnten, insbesondere solche, die mit dem Überschreiben vorhandener Dateien im Zielverzeichnis verbunden sind.
Ordner origin
:
Ausgabe:
Der obige Befehl wird nur einen bestimmten Ordner ausschließen. Wir können auch mehrere Ordner ausschließen, indem wir einfach die mehreren Ordnernamen in -Exclude()
einfügen.
Siehe den Befehl zum Ausschluss mehrerer Ordner:
powershellCopyCopy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder', 'SubFolder2')).FullName -Destination "destination\" -Recurse -Force
Siehe die Ausgabe:
Ausschluss von Ordnern bei PowerShell-Kopieroperationen mit Where-Object
und PSIsContainer
PowerShell bietet eine umfangreiche Sammlung von Cmdlets zur Manipulation von Dateien und Ordnern, wobei Copy-Item
ein Schlüsselakteur für Kopieroperationen ist. Allerdings unterstützt die native Funktionalität nicht direkt den Ausschluss von Ordnern.
Um dies zu erreichen, verwenden wir eine Kombination aus Get-ChildItem
, Where-Object
und der Eigenschaft PSIsContainer
. Dieses Verfahren ist besonders nützlich für Kopieroperationen, bei denen Sie Verzeichnisse ausschließen müssen, während Sie Dateien beibehalten.
Die Struktur des Skripts ist wie folgt:
powershellCopyGet-ChildItem -Path "sourcePath\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destinationPath" -Recurse -Container
Parameter:
Get-ChildItem -Path "sourcePath\" -Recurse
: Ruft alle Elemente (Dateien und Ordner) vom angegebenen Pfad ab, einschließlich Unterverzeichnissen.Where-Object { $_.PSIsContainer -notmatch 'True' }
: Filtert alle Verzeichnisse heraus.PSIsContainer
ist eine boolesche Eigenschaft, die für VerzeichnisseTrue
und für DateienFalse
ist.Copy-Item -Destination "destinationPath" -Recurse -Container
: Kopiert die verbleibenden Elemente (Dateien) an das Ziel.-Recurse
wird verwendet, um eine Unterverzeichnisdurchquerung sicherzustellen, und-Container
bewahrt die Verzeichnisstruktur.
Codebeispiel:
powershellCopyGet-ChildItem -Path "origin\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destination\" -Recurse -Container
In unserem Skript beginnen wir damit, alle Elemente aus dem Quellverzeichnis (origin\
) zu sammeln. Dazu verwenden wir das Cmdlet Get-ChildItem
.
Die eigentliche Magie geschieht mit dem Cmdlet Where-Object
, wo wir einen Filter einführen, um spezifisch Verzeichnisse auszuschließen. Dieser Ausschluss basiert auf der Bedingung $_ .PSIsContainer -notmatch 'True'
.
Dieses spezifische Stück Code ist entscheidend, da es effektiv die gesammelten Elemente durchliest und sicherstellt, dass nur Dateien (und keine Verzeichnisse) weiter in die Pipeline geleitet werden.
Anschließend werden diese gefilterten Dateien an das Cmdlet Copy-Item
übergeben. Unser Befehl hier besteht darin, diese Dateien an unser angegebenes Ziel (destination\
) zu kopieren.
Ein wichtiger Aspekt dieser Operation ist, wie sie die ursprüngliche Verzeichnisstruktur im Ziel beibehält, trotz des Ausschlusses der Ordner selbst. Dieses Gleichgewicht wird durch die sorgfältige Abstimmung der Parameter -Recurse
und -Container
innerhalb von Copy-Item
erreicht, um sicherzustellen, dass die Integrität der Dateistruktur gewahrt bleibt, abgesehen von den tatsächlichen Ordnern.
Ausgabe:
Fazit
Zusammenfassend bieten die in diesem Artikel vorgestellten Techniken – die Verwendung von Get-Item
mit -Exclude
und Where-Object
mit PSIsContainer
– leistungsstarke und flexible Möglichkeiten, um Ordner während PowerShell-Kopieroperationen auszuschließen. Durch das Verständnis und die Anwendung dieser Methoden können Benutzer ihre Datei-Management- und Automatisierungsfähigkeiten in PowerShell erheblich verbessern.
Der Ansatz mit Get-Item
und -Exclude
ist unkompliziert und sehr effektiv, um spezifische Ordner auszuschließen, während die Methoden mit Where-Object
und PSIsContainer
eine nuanciertere Kontrolle bieten, die besonders nützlich in Szenarien ist, in denen die Ausschlusskriterien komplexer oder dynamisch sind. Beide Methoden demonstrieren die Vielseitigkeit und Leistungsfähigkeit von PowerShell beim Umgang mit Dateien und Verzeichnissen und machen es zu einem unschätzbaren Instrument für Systemadministratoren, Entwickler und IT-Fachleute.
Gerüstet mit diesem Wissen können Benutzer eine Vielzahl von Datei-Kopiervorgängen mit Zuversicht angehen und eine effiziente und präzise Kontrolle über ihre Datei-Management-Operationen in Windows-Umgebungen sicherstellen.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook