Freigeben über


Über_FileSystem_Provider

Anbietername

Dateisystem

Antriebe

C:, ... D:Temp:

Fähigkeiten

Filter, ShouldProcess

Kurzbeschreibung

Bietet Zugriff auf Dateien und Verzeichnisse.

Detaillierte Beschreibung

Mit dem PowerShell-FileSystem--Anbieter können Sie Dateien und Verzeichnisse in PowerShell abrufen, hinzufügen, ändern, leeren und löschen.

Die FileSystem- Laufwerke sind ein hierarchischer Namespace, der die Verzeichnisse und Dateien auf Ihrem Computer enthält. Ein FileSystem-Laufwerk kann ein logisches oder physisches Laufwerk, ein Verzeichnis oder eine zugeordnete Netzwerkfreigabe sein.

Ab PowerShell Version 7.0 wird ein Laufwerk namens Temp: dem temporären Verzeichnispfad des Benutzers zugeordnet. PowerShell verwendet die .NET-GetTempPath() Methode, um den Speicherort des temporären Ordners zu bestimmen. Unter Windows befindet sich der Speicherort an derselben Stelle wie $Env:TEMP. Auf Nicht-Windows-Systemen ist der Speicherort mit $Env:TMPDIR oder /tmp identisch, wenn die Umgebungsvariable nicht definiert ist.

Der FileSystem--Anbieter unterstützt die folgenden Cmdlets, die in diesem Artikel behandelt werden.

Typen, die von diesem Anbieter verfügbar gemacht werden

Dateien sind Instanzen der System.IO.FileInfo Klasse. Verzeichnisse sind Instanzen der System.IO.DirectoryInfo Klasse.

Das erweiterte PowerShell-Typsystem fügt diesen Objekttypen zusätzliche Eigenschaften hinzu, um zusätzliche Informationen bereitzustellen. Einige Informationen sind plattformspezifisch. Die möglichen Werte der LinkType-Eigenschaft hängen beispielsweise von der verwendeten Plattform und dem Dateisystem ab. Linux- und macOS-Dateisysteme unterstützen HardLink und SymLink. Windows NTFS unterstützt HardLink, SymLink, Junctionund mehrere andere Werte für LinkType.

Wenn Sie Get-Item oder Get-ChildItem für Informationen zu einem verknüpften Element verwenden, enthält die Mode--Eigenschaft eine l, um anzugeben, dass das Element ein Link ist. Die LinkType--Eigenschaft enthält den Linktyp.

AppExecLink Links werden erstellt, wenn Sie eine Anwendung aus dem Microsoft Store installieren. Für AppExecLink Links stellt Windows keine Werte für die eigenschaften LinkType oder LinkTarget bereit.

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

Der FileSystem Anbieter macht seine Datenspeicher verfügbar, indem alle logischen Laufwerke auf dem Computer als PowerShell-Laufwerke zugeordnet werden. Wenn Sie mit einem FileSystem-Laufwerk arbeiten möchten, können Sie Ihren Speicherort mithilfe des Laufwerknamens auf ein Laufwerk ändern, gefolgt von einem Doppelpunkt (:).

Set-Location C:

Außerdem können Sie auf den FileSystem-Anbieter von jedem anderen PowerShell-Laufwerk aus zugreifen und mit ihm arbeiten. Um von einem anderen Speicherort aus auf eine Datei oder ein Verzeichnis zu verweisen, verwenden Sie den Laufwerksnamen (C:, D:, ...) im Pfad.

Anmerkung

PowerShell verwendet Aliase, um Ihnen eine vertraute Arbeitsweise mit Anbieterpfaden zu ermöglichen. Befehle wie dir und ls sind jetzt Aliase für Get-ChildItem, cd ist ein Alias für Set-Location. und pwd ist ein Alias für Get-Location.

Abrufen von Dateien und Verzeichnissen

Das Cmdlet Get-ChildItem gibt alle Dateien und Verzeichnisse am aktuellen Speicherort zurück. Sie können einen anderen Suchpfad angeben und integrierte Parameter verwenden, um die Rekursionstiefe zu filtern und zu steuern.

Get-ChildItem

Weitere Informationen zur Cmdlet-Verwendung finden Sie unter Get-ChildItem.

Kopieren von Dateien und Verzeichnissen

Das cmdlet Copy-Item kopiert Dateien und Verzeichnisse an einen von Ihnen angegebenen Speicherort. Parameter stehen zum Filtern und Rekursieren zur Verfügung, ähnlich wie Get-ChildItem.

Mit dem folgenden Befehl werden alle Dateien und Verzeichnisse unter dem Pfad C:\temp\ in den Ordner C:\Windows\Tempkopiert.

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item Dateien im Zielverzeichnis überschreibt, ohne dass eine Bestätigung angezeigt wird.

Dieser Befehl kopiert die a.txt Datei aus dem verzeichnis C:\a in das verzeichnis C:\a\bb.

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

Kopiert alle Verzeichnisse und Dateien im C:\a Verzeichnis in das verzeichnis C:\c. Wenn eines der zu kopierenden Verzeichnisse bereits im Zielverzeichnis vorhanden ist, schlägt der Befehl fehl, es sei denn, Sie geben den Parameter Force an.

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

Weitere Informationen finden Sie unter Copy-Item.

Verschieben von Dateien und Verzeichnissen

Mit diesem Befehl wird die c.txt-Datei im verzeichnis C:\a in das Verzeichnis C:\a\aa verschoben:

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

Standardmäßig überschreibt das Cmdlet keine vorhandene Datei mit demselben Namen. Um zu erzwingen, dass das Cmdlet eine vorhandene Datei überschreibt, geben Sie den parameter Force an.

Sie können ein Verzeichnis nicht verschieben, wenn es sich bei diesem Verzeichnis um den aktuellen Speicherort handelt. Wenn Sie Move-Item verwenden, um das Verzeichnis am aktuellen Speicherort zu verschieben, wird dieser Fehler angezeigt.

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

Verwalten von Dateiinhalten

Abrufen des Inhalts einer Datei

Dieser Befehl ruft den Inhalt der Datei "Test.txt" ab und zeigt sie in der Konsole an.

Get-Content -Path Test.txt

Sie können den Inhalt der Datei an ein anderes Cmdlet weiterleiten. Beispielsweise liest der folgende Befehl den Inhalt der Test.txt Datei und stellt sie dann als Eingabe für das Cmdlet ConvertTo-Html bereit:

Get-Content -Path Test.txt | ConvertTo-Html

Sie können den Inhalt einer Datei auch abrufen, indem Sie dem Anbieterpfad das Dollarzeichen ($) voranstellen. Der Pfad muss aufgrund von Variablennamensbeschränkungen in geschweifte Klammern eingeschlossen werden. Weitere Informationen finden Sie unter about_Variables.

${C:\Windows\System32\drivers\etc\hosts}

Hinzufügen von Inhalten zu einer Datei

Mit diesem Befehl wird die Zeichenfolge "Testinhalt" an die datei Test.txt angefügt:

Add-Content -Path test.txt -Value "test content"

Der vorhandene Inhalt in der datei Test.txt wird nicht gelöscht.

Ersetzen des Inhalts einer Datei

Mit diesem Befehl wird der Inhalt der datei Test.txt durch die Zeichenfolge "Testinhalt" ersetzt:

Set-Content -Path test.txt -Value "test content"

Er überschreibt den Inhalt von Test.txt. Sie können den Value-Parameter des Cmdlets New-Item verwenden, um einer Datei Inhalt hinzuzufügen, wenn Sie sie erstellen.

Durchlaufen des Inhalts einer Datei

Standardmäßig verwendet das cmdlet Get-Content das End-of-Line-Zeichen als Trennzeichen, sodass es eine Datei als Sammlung von Zeichenfolgen abruft, wobei jede Zeile als eine Zeichenfolge in der Datei enthalten ist.

Den Delimiter-Parameter können Sie verwenden, um ein alternatives Trennzeichen anzugeben. Wenn Sie sie auf die Zeichen festlegen, die das Ende eines Abschnitts oder den Anfang des nächsten Abschnitts kennzeichnen, können Sie die Datei in logische Teile aufteilen.

Der erste Befehl ruft die Employees.txt Datei ab und teilt sie in Abschnitte auf, die jeweils mit den Wörtern "Ende des Mitarbeiterdatensatzes" enden und in der variablen $e gespeichert werden.

Der zweite Befehl verwendet arraynotation, um das erste Element in der Auflistung in $eabzurufen. Es verwendet einen Index von 0, da PowerShell-Arrays nullbasiert sind.

Weitere Informationen zum Get-Content-Cmdlet finden Sie im Hilfethema zum Get-Content.

Weitere Informationen zu Arrays finden Sie unter about_Arrays.

$e = Get-Content C:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

Verwalten von Sicherheitsdeskriptoren

Anzeigen der ACL für eine Datei

Dieser Befehl gibt ein System.Security.AccessControl.FileSecurity-Objekt zurück:

Get-Acl -Path test.txt | Format-List -Property *

Weitere Informationen zu diesem Objekt erhalten Sie, wenn Sie den Befehl an das Cmdlet Get-Member weiterleiten oder die FileSecurity Klasse anzeigen.

Erstellen von Dateien und Verzeichnissen

Erstellen eines Verzeichnisses

Mit diesem Befehl wird das verzeichnis logfiles auf dem laufwerk C erstellt:

New-Item -Path C:\ -Name logfiles -Type Directory

PowerShell enthält auch eine mkdir-Funktion (Alias md), die das Cmdlet New-Item zum Erstellen eines neuen Verzeichnisses verwendet.

Erstellen einer Datei

Mit diesem Befehl wird die log2.txt Datei im verzeichnis C:\logfiles erstellt und dann der Datei die Zeichenfolge "Testprotokoll" hinzugefügt:

New-Item -Path C:\logfiles -Name log2.txt -Type File

Erstellen einer Datei mit Inhalt

Erstellt eine Datei namens log2.txt im C:\logfiles Verzeichnis und fügt der Datei die Zeichenfolge "Testprotokoll" hinzu.

New-Item -Path C:\logfiles -Name log2.txt -Type File -Value "test log"

Umbenennen von Dateien und Verzeichnissen

Umbenennen einer Datei

Mit diesem Befehl wird die a.txt-Datei im verzeichnis C:\a in b.txtumbenannt:

Rename-Item -Path C:\a\a.txt -NewName b.txt

Umbenennen eines Verzeichnisses

Mit diesem Befehl wird das verzeichnis C:\a\cc in C:\a\ddumbenannt:

Rename-Item -Path C:\a\cc -NewName dd

Löschen von Dateien und Verzeichnissen

Löschen einer Datei

Mit diesem Befehl wird die Test.txt Datei im aktuellen Verzeichnis gelöscht:

Remove-Item -Path test.txt

Löschen von Dateien mithilfe von Wildcards

Mit diesem Befehl werden alle Dateien im aktuellen Verzeichnis gelöscht, die über die Dateinamenerweiterung .xml verfügen:

Remove-Item -Path *.xml

Starten eines Programms durch Aufrufen einer zugeordneten Datei

Aufrufen einer Datei

Das Cmdlet Get-Service ruft Informationen zu lokalen Diensten ab und leitet diese dann an das Cmdlet Export-Csv weiter, um die Informationen in der Services.csv Datei zu speichern.

Anschließend öffnet Invoke-Item die services.csv Datei im Programm, das der .csv Erweiterung zugeordnet ist:

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Abrufen von Dateien und Ordnern mit angegebenen Attributen

Systemdateien abrufen

Dieser Befehl ruft Systemdateien im aktuellen Verzeichnis und seinen Unterverzeichnissen ab.

Der Parameter File wird verwendet, um nur Dateien (keine Verzeichnisse) und den parameter System abzurufen, um nur Elemente mit dem Attribut "system" abzurufen.

Es verwendet den Recurse Parameter, um die Elemente im aktuellen Verzeichnis und allen Unterverzeichnissen abzurufen.

Get-ChildItem -File -System -Recurse

Abrufen ausgeblendeter Dateien

Dieser Befehl ruft alle Dateien, einschließlich ausgeblendeter Dateien, im aktuellen Verzeichnis ab.

Es verwendet den parameter Attributes mit zwei Werten, !Directory+Hidden, die ausgeblendete Dateien abruft, und !Directory, die alle anderen Dateien abruft.

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -Att !d,!d+h entspricht diesem Befehl.

Abrufen komprimierter und verschlüsselter Dateien

Dieser Befehl ruft Dateien im aktuellen Verzeichnis ab, die entweder komprimiert oder verschlüsselt sind.

Es verwendet den parameter Attributes mit zwei Werten, Compressed und Encrypted. Die Werte werden durch ein Komma , getrennt, das den Operator "OR" darstellt.

Get-ChildItem -Attributes Compressed,Encrypted

Dynamische Parameter

Dynamische Parameter sind Cmdlet-Parameter, die von einem PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet im vom Anbieter aktivierten Laufwerk verwendet wird.

Codierung <Codierung>

Gibt die Dateicodierung an. Der Standardwert ist ASCII.

  • ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).
  • bigendianunicode: Codiert im UTF-16-Format mithilfe der Big-Endian-Byte-Reihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mithilfe der Big-Endian-Bytereihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mit Byteanordnung Little Endian.
  • utf7: Codiert im UTF-7-Format.
  • utf8: Codiert im UTF-8-Format.
  • utf8BOM: Codiert im UTF-8-Format mit Byte Order Mark (BOM)
  • utf8NoBOM: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)
  • utf32: Codiert im UTF-32-Format.

Unterstützte Cmdlets

  • Add-Content
  • Get-Content
  • Set-Content

Trennzeichen <Zeichenkette>

Gibt das Trennzeichen an, das Get-Content verwendet, um die Datei während des Lesens in Objekte aufzuteilen.

Der Standardwert ist \n, das Zeilenendezeichen.

Beim Lesen einer Textdatei gibt Get-Content eine Auflistung von Zeichenfolgenobjekten zurück, die jeweils mit dem Trennzeichen enden.

Wenn Sie ein Trennzeichen eingeben, das in der Datei nicht vorhanden ist, gibt Get-Content die gesamte Datei als einzelnes, nicht durch Trennzeichen getrenntes Objekt zurück.

Sie können diesen Parameter verwenden, um eine große Datei in kleinere Dateien aufzuteilen, indem Sie ein Dateitrennzeichen angeben, z. B. "Ende des Beispiels", als Trennzeichen. Das Trennzeichen wird beibehalten (nicht verworfen) und wird zum letzten Element in jedem Dateiabschnitt.

Anmerkung

Wenn der Wert des Parameters des -Trennzeichens eine leere Zeichenfolge ist, gibt Get-Content nichts zurück. Dies ist ein bekanntes Problem. Um zu erzwingen, dass Get-Content die gesamte Datei als einzelne, nicht getrennte Zeichenfolge zurückgeben, geben Sie einen Wert ein, der in der Datei nicht vorhanden ist.

Unterstützte Cmdlets

  • Get-Content

Warten <SwitchParameter>

Wartet auf das Anfügen von Inhalten an die Datei. Wenn Inhalt angefügt wird, wird der angefügte Inhalt zurückgegeben. Wenn sich der Inhalt geändert hat, wird die gesamte Datei zurückgegeben.

Wenn Sie warten, überprüft Get-Content die Datei einmal pro Sekunde, bis Sie sie unterbrechen, z. B. durch Drücken von STRG+C.

Unterstützte Cmdlets

  • Get-Content

Attribute <FlagsExpression>

Ruft Dateien und Ordner mit den angegebenen Attributen ab. Dieser Parameter unterstützt alle Attribute und ermöglicht es Ihnen, komplexe Kombinationen von Attributen anzugeben.

Der parameter Attributes wurde in Windows PowerShell 3.0 eingeführt.

Der parameter Attributes unterstützt die folgenden Attribute:

  • Archiv
  • Komprimiert
  • Gerät
  • Verzeichnis
  • Verschlüsselt
  • Ausgeblendet
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • System
  • Temporär

Eine Beschreibung dieser Attribute finden Sie in der FileAttributes- Enumeration.

Verwenden Sie die folgenden Operatoren, um Attribute zu kombinieren.

  • ! -NICHT
  • + -UND
  • , -ODER

Es sind keine Leerzeichen zwischen einem Operator und seinem Attribut zulässig. Leerzeichen sind jedoch vor Kommas zulässig.

Unterstützte Cmdlets

  • Get-ChildItem

Verzeichnis <SwitchParameter>

Ruft Verzeichnisse (Ordner) ab.

Der parameter Directory wurde in Windows PowerShell 3.0 eingeführt.

Um nur Verzeichnisse abzurufen, verwenden Sie den Parameter Directory, und lassen Sie den Parameter File weg. Verwenden Sie zum Ausschließen von Verzeichnissen den Parameter File, und lassen Sie den Parameter Directory weg, oder verwenden Sie den Parameter Attributes.

Unterstützte Cmdlets

  • Get-ChildItem

Datei <SwitchParameter>

Ruft die Dateien ab.

Der parameter File wurde in Windows PowerShell 3.0 eingeführt.

Um nur Dateien abzurufen, verwenden Sie den Parameter File, und lassen Sie den Parameter Directory weg. Verwenden Sie zum Ausschließen von Dateien den Parameter Directory, und lassen Sie den Parameter File aus, oder verwenden Sie den Parameter Attributes.

Unterstützte Cmdlets

  • Get-ChildItem

Ausgeblendet <SwitchParameter>

Ruft nur ausgeblendete Dateien und Verzeichnisse (Ordner) ab. Standardmäßig ruft Get-ChildItem nur nicht ausgeblendete Elemente ab.

Der parameter Hidden wurde in Windows PowerShell 3.0 eingeführt.

Um nur ausgeblendete Elemente abzurufen, verwenden Sie den Parameter Hidden, dessen h oder ah Aliase oder den wert Hidden des Parameters Attributes. Um ausgeblendete Elemente auszuschließen, lassen Sie den Parameter Hidden aus, oder verwenden Sie den Parameter Attributes.

Unterstützte Cmdlets

  • Get-ChildItem

ReadOnly <SwitchParameter->

Ruft nur schreibgeschützte Dateien und Verzeichnisse (Ordner) ab.

Der ReadOnly Parameter wurde in Windows PowerShell 3.0 eingeführt.

Um nur schreibgeschützte Elemente abzurufen, verwenden Sie den ReadOnly-Parameter, seinen ar-Alias oder den ReadOnly-Wert des Parameters Attributes. Um schreibgeschützte Elemente auszuschließen, verwenden Sie den Parameter Attributes.

Unterstützte Cmdlets

  • Get-ChildItem

System <SwitchParameter>

Ruft nur Systemdateien und Verzeichnisse (Ordner) ab.

Der parameter System wurde in Windows PowerShell 3.0 eingeführt.

Um nur Systemdateien und Ordner abzurufen, verwenden Sie den parameter System, dessen as alias oder den System Wert des parameters Attributes. Verwenden Sie zum Ausschließen von Systemdateien und Ordnern den parameter Attributes.

Unterstützte Cmdlets

  • Get-ChildItem

NeuererThan <DateTime>

Gibt $true zurück, wenn der LastWriteTime Wert einer Datei größer als das angegebene Datum ist. Andernfalls wird $falsezurückgegeben.

Geben Sie ein DateTime--Objekt ein, z. B. ein Objekt, das vom cmdlet Get-Date zurückgegeben wird, oder eine Zeichenfolge, die in ein DateTime--Objekt konvertiert werden kann, z. B. "August 10, 2011 2:00 PM".

Unterstützte Cmdlets

OlderThan <DateTime>

Gibt $true zurück, wenn der LastWriteTime Wert einer Datei kleiner als das angegebene Datum ist. Andernfalls wird $falsezurückgegeben.

Geben Sie ein DateTime--Objekt ein, z. B. ein Objekt, das vom Cmdlet Get-Date zurückgegeben wird, oder eine Zeichenfolge, die in ein DateTime-Objekt konvertiert werden kann, z. B. "August 10, 2011 2:00 PM".

Unterstützte Cmdlets

  • Test-Path

Streamzeichenfolge <>

Verwaltet alternative Datenströme. Geben Sie den Datenstromnamen ein. Wildcards sind nur in Get-Item für Befehle und Remove-Item auf einem Dateisystemlaufwerk zulässig.

Unterstützte Cmdlets

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

Unformatierte <SwitchParameter>

Neue Zeilenumbruchzeichen werden ignoriert. Gibt Inhalt als einzelnes Element zurück.

Unterstützte Cmdlets

  • Get-Content

ItemType-Zeichenfolge <>

Mit diesem Parameter können Sie den Typ des zu erstellenden Elements mit New-Itemangeben.

Die verfügbaren Werte dieses Parameters hängen vom aktuellen Anbieter ab, den Sie verwenden.

In einem FileSystem Laufwerk sind die folgenden Werte zulässig:

  • Datei
  • Verzeichnis
  • SymbolicLink
  • Knotenpunkt
  • HardLink

Unterstützte Cmdlets

  • New-Item

Verwenden der Pipeline

Cmdlets von Anbietern akzeptieren Pipeline-Eingaben. Sie können die Aufgabe mithilfe der Pipeline vereinfachen, indem Sie Anbieterdaten von einem Cmdlet an ein anderes Anbieter-Cmdlet senden. Weitere Informationen zur Verwendung der Pipeline mit Anbieter-Cmdlets finden Sie in den Cmdlet-Referenzen in diesem Artikel.

Hilfe erhalten

Ab Windows PowerShell 3.0 können Sie benutzerdefinierte Hilfethemen für Anbieter-Cmdlets abrufen, die erläutern, wie sich diese Cmdlets in einem Dateisystemlaufwerk verhalten.

Um die Hilfethemen abzurufen, die für das Dateisystemlaufwerk angepasst sind, führen Sie einen Befehl "Get-Help" auf einem Dateisystemlaufwerk aus, oder verwenden Sie den parameter Path von Get-Help, um ein Dateisystemlaufwerk anzugeben.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

Siehe auch