Ordner im PowerShell ausschließen {CODE_BLOCK_8}

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

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 von Get-Item bereitgestellt.
  • Get-Item: Ruft die Elemente vom angegebenen Speicherort ab.
  • -Exclude: Dieser Parameter in Get-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:

PowerShell Copy-Item Ausschlussordner - Quelldateien

Ausgabe:

powershell copy-item ohne Ordner - 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:

powershell copy-item ausschließen Ordner - 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 Verzeichnisse True und für Dateien False 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:

PowerShell Element kopieren - Ausschlussordner - 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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Sheeraz Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - PowerShell Copy