Freigeben über


about_FileSystem_Provider

Anbietername

FileSystem

Laufwerke

C:, ... D:Temp:

Capabilities

Filter, ShouldProcess

Kurze Beschreibung

Ermöglicht den Zugriff auf Dateien und Verzeichnisse.

Detaillierte Beschreibung

Mit dem PowerShell FileSystem-Anbieter können Sie Dateien und Verzeichnisse in PowerShell abrufen, hinzufügen, ändern, löschen 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 aufgerufenes TEMP: Laufwerk dem temporären Verzeichnispfad des Benutzers zugeordnet. PowerShell verwendet die .NET GetTempPath() -Methode, um den Speicherort des temporären Ordners zu bestimmen. Unter Windows ist der Speicherort identisch mit $env:TEMP. Auf Nicht-Windows-Systemen ist der Speicherort identisch mit $env:TMPDIR oder /tmp 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 informationen zu einem verknüpften Element verwenden Get-Item oder Get-ChildItem angeben, enthält die Mode-Eigenschaft einen l Link, um anzugeben, dass es sich bei dem Element um einen Link handelt. Die LinkType-Eigenschaft enthält den Typ des Links.

AppExecLink Links werden erstellt, wenn Sie eine Anwendung aus dem Microsoft Store installieren. Für AppExecLink Links stellt Windows keine Werte für die LinkType - oder LinkTarget-Eigenschaften 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. Um mit einem FileSystem-Laufwerk zu arbeiten, können Sie Ihren Speicherort mithilfe des Laufwerknamens, gefolgt von einem Doppelpunkt (:) auf ein Laufwerk ändern.

Set-Location C:

Sie können auch mit dem FileSystem-Anbieter von jedem anderen PowerShell-Laufwerk arbeiten. Um von einem anderen Speicherort aus auf eine Datei oder ein Verzeichnis zu verweisen, verwenden Sie den Laufwerknamen (C:, , D:...) im Pfad.

Hinweis

PowerShell verwendet Aliase, damit Sie mit Anbieterpfaden vertraut arbeiten können. 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 Get-ChildItem Cmdlet 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 Copy-Item Cmdlet kopiert Dateien und Verzeichnisse an einen von Ihnen angegebenen Speicherort. Parameter stehen zum Filtern und Rekursieren zur Verfügung, ähnlich wie Get-ChildItem.

Der folgende Befehl kopiert alle Dateien und Verzeichnisse unter dem Pfad C:\temp\ zum Ordner C:\Windows\Temp.

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

Copy-Item überschreibt Dateien im Zielverzeichnis, ohne zur Bestätigung aufzufordern.

Mit diesem Befehl wird die a.txt Datei aus dem C:\a Verzeichnis in das C:\a\bb Verzeichnis kopiert.

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

Kopiert alle Verzeichnisse und Dateien im Verzeichnis in C:\a das C:\c Verzeichnis. 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 in C:\a das C:\a\aa Verzeichnis 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 das Verzeichnis am aktuellen Speicherort 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 leiten. 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 Variablenbeneneinschrä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 Test.txt Datei angefügt:

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

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

Ersetzen des Inhalts einer Datei

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

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

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

Durchlaufen des Inhalts einer Datei

Standardmäßig verwendet das Get-Content Cmdlet das End-of-Line-Zeichen als Trennzeichen, sodass es eine Datei als Sammlung von Zeichenfolgen mit jeder Zeile als eine Zeichenfolge in der Datei abruft.

Mit dem Parameter "Delimiter " können Sie ein alternatives Trennzeichen angeben. Wenn Sie dafür 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 $e Variablen 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 für die 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 mit dem Befehl an das Cmdlet "Get-Member ", oder lesen Sie die FileSecurity-Klasse .

Erstellen von Dateien und Verzeichnissen

Erstellen eines Verzeichnisses

Mit diesem Befehl wird das logfiles Verzeichnis auf dem C Laufwerk erstellt:

New-Item -Path c:\ -Name logfiles -Type directory

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

Erstellen einer Datei

Dieser Befehl erstellt die log2.txt Datei im C:\logfiles Verzeichnis und fügt dann der Datei die Zeichenfolge "Testprotokoll" hinzu:

New-Item -Path c:\logfiles -Name log2.txt -Type file

Erstellen einer Datei mit Inhalt

Erstellt eine im Verzeichnis aufgerufene log2.txt C:\logfiles Datei 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 in C:\a b.txt:

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

Umbenennen eines Verzeichnisses

Mit diesem Befehl wird das C:\a\cc Verzeichnis in C:\a\dd:

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 die .xml Dateinamenerweiterung aufweisen:

Remove-Item -Path *.xml

Starten eines Programms durch Aufrufen einer zugeordneten Datei

Aufrufen einer Datei

Das Get-Service-Cmdlet zum Abrufen von Informationen zu lokalen Diensten und rohrt die Informationen an das Cmdlet "Export-CSV ", 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 die Systemdateien im aktuellen Verzeichnis und seinen Unterverzeichnissen ab.

Er verwendet den Parameter "File ", um nur Dateien (nicht Verzeichnisse) und den Systemparameter abzurufen, um nur Elemente mit dem Attribut "system" abzurufen.

Er verwendet den Recurse-Parameter , um die Elemente im aktuellen Verzeichnis und alle Unterverzeichnisse abzurufen.

Get-ChildItem -File -System -Recurse

Ausgeblendete Dateien abrufen

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

Es verwendet den Parameter Attributes mit zwei Werten, !Directory+Hiddendie ausgeblendete Dateien abrufen und !Directory, die alle anderen Dateien abrufen.

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

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

Abrufen komprimierter und verschlüsselter Dateien

Dieser Befehl ruft die 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.

Codierungscodierung <>

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 mit der Big-End-Byte-Reihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mithilfe der Big-End-Byte-Reihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.
  • utf7: Codiert im UTF-7-Format.
  • utf8: Codiert im UTF-8-Format.
  • utf8BOM: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (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

Trennzeichenzeichenfolge <>

Gibt das Trennzeichen an, das Get-Content zum Aufteilen der Datei in Objekte beim Lesen verwendet wird.

Der Standardwert ist \ndas End-of-Line-Zeichen.

Gibt beim Lesen einer Textdatei 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, Get-Content wird die gesamte Datei als einzelnes, nicht durch Trennzeichen getrenntes Objekt zurückgegeben.

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

Hinweis

Wenn der Wert des Trennzeichenparameters eine leere Zeichenfolge ist, Get-Content gibt derzeit nichts zurück. Dies ist ein bekanntes Problem. Wenn Sie erzwingen Get-Content möchten, dass die gesamte Datei als einzelne, nicht getrennte Zeichenfolge zurückgegeben wird, geben Sie einen Wert ein, der in der Datei nicht vorhanden ist.

Unterstützte Cmdlets

  • Get-Content

Wait <SwitchParameter>

Wartet auf Inhalt, der an die Datei angefügt wird. Wenn Inhalt angefügt wird, wird der angefügte Inhalt zurückgegeben. Wenn der Inhalt geändert wurde, wird die gesamte Datei zurückgegeben.

Wenn Sie warten, wird die Datei einmal pro Sekunde überprüft, Get-Content 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 Sie können komplexe Kombinationen von Attributen angeben.

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

Der Parameter Attributes unterstützt die folgenden Attribute:

  • Archivieren
  • Compressed
  • Device
  • Directory
  • Verschlüsselt
  • Hidden
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • AnalysePoint
  • SparseFile
  • System
  • Temporär

Eine Beschreibung dieser Attribute finden Sie in der FileAttributes-Aufzählung .

Verwenden Sie die folgenden Operatoren, um Attribute zu kombinieren.

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

Zwischen einem Operator und dessen Attribut sind keine Leerzeichen zulässig. Allerdings dürfen Leerzeichen vor Kommas gesetzt werden.

Unterstützte Cmdlets

  • Get-ChildItem

Directory <SwitchParameter>

Ruft Verzeichnisse (Ordner) ab.

Der Directory-Parameter wurde in Windows PowerShell 3.0 eingeführt.

Wenn Sie nur Verzeichnisse abrufen möchten, verwenden Sie den Parameter "Directory ", und lassen Sie den Parameter "File" aus. Verwenden Sie zum Ausschließen von Verzeichnissen den Parameter "File ", und lassen Sie den Parameter "Directory " aus, oder verwenden Sie den Parameter "Attributes ".

Unterstützte Cmdlets

  • Get-ChildItem

File <SwitchParameter>

Ruft die Dateien ab.

Der Dateiparameter wurde in Windows PowerShell 3.0 eingeführt.

Um nur Dateien abzurufen, verwenden Sie den Parameter "File ", und lassen Sie den Parameter "Directory" aus. 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

Hidden <SwitchParameter>

Ruft nur ausgeblendete Dateien und Verzeichnisse (Ordner) ab. Ruft standardmäßig 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 Aliase oder ah den Hidden-Wert des Attributes-Parameters . 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 , dessen ar Alias oder den ReadOnly-Wert des Attributes-Parameters . Verwenden Sie den Parameter Attributes , um schreibgeschützte Elemente auszuschließen.

Unterstützte Cmdlets

  • Get-ChildItem

System <SwitchParameter>

Ruft nur Systemdateien und Verzeichnisse (Ordner) ab.

Der Systemparameter wurde in Windows PowerShell 3.0 eingeführt.

Um nur Systemdateien und Ordner abzurufen, verwenden Sie den Systemparameter, den as Alias oder den Systemwert des Attributes-Parameters. Verwenden Sie den Parameter Attributes , um Systemdateien und Ordner auszuschließen.

Unterstützte Cmdlets

  • Get-ChildItem

NeuererThan <DateTime>

Gibt zurück $True , 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 "August 10, 2011 2:00 PM". B. .

Unterstützte Cmdlets

OlderThan <DateTime>

Gibt zurück $True , 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 das Get-Date Cmdlet zurückgibt, oder eine Zeichenfolge, die in ein DateTime-Objekt konvertiert werden kann, z "August 10, 2011 2:00 PM". B. .

Unterstützte Cmdlets

  • Test-Path

Streamzeichenfolge <>

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

Unterstützte Cmdlets

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

Raw <SwitchParameter>

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

Unterstützte Cmdlets

  • Get-Content

ItemType-Zeichenfolge <>

Mit diesem Parameter können Sie den Typ des zu erstellenden New-ItemElements angeben.

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
  • Junction
  • HardLink

Unterstützte Cmdlets

  • New-Item

Verwenden der Pipeline

Anbieter-Cmdlets akzeptieren Pipelineeingaben. 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

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 Get-Help-Befehl auf einem Dateisystemlaufwerk aus, oder verwenden Sie den Path-Parameter zum Get-Help Angeben eines Dateisystemlaufwerks.

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

Siehe auch