Share via


about_FileSystem_Provider

Anbietername

FileSystem

Laufwerke

C:, D:, Temp: ...

Funktionen

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 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 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 verwendeten 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 oder Get-ChildItem verwenden, um Informationen zu einem verknüpften Element zu erhaltenGet-Item, enthält die Mode-Eigenschaft einen l , um anzugeben, dass es sich bei dem Element um einen Link handelt. 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 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 er alle logischen Laufwerke auf dem Computer als PowerShell-Laufwerke zuordnen. Um mit einem FileSystem-Laufwerk zu arbeiten, können Sie ihren Speicherort in ein Laufwerk ändern, indem Sie den Laufwerksnamen gefolgt von einem Doppelpunkt (:) verwenden.

Set-Location C:

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

Hinweis

PowerShell verwendet Aliase, um Ihnen eine vertraute Methode zum Arbeiten 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 Get-ChildItem Cmdlet gibt alle Dateien und Verzeichnisse am aktuellen Speicherort zurück. Sie können einen anderen Pfad für die Suche angeben und integrierte Parameter verwenden, um die Rekursionstiefe zu filtern und zu steuern.

Get-ChildItem

Weitere Informationen zur Verwendung von Cmdlets 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 sind zum Filtern und Rekursieren verfügbar, ähnlich wie Get-ChildItem.

Der folgende Befehl kopiert alle Dateien und Verzeichnisse unter dem Pfad C:\temp\ in den 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.

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

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 Force-Parameter 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 das Überschreiben einer vorhandenen Datei durch das Cmdlet zu erzwingen, geben Sie den Force-Parameter an.

Sie können ein Verzeichnis nicht verschieben, wenn dieses Verzeichnis der aktuelle Speicherort ist. Wenn Sie verwenden Move-Item , um das Verzeichnis an den 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 leiten. Der folgende Befehl liest beispielsweise den Inhalt der Test.txt Datei und stellt sie dann als Eingabe an das Cmdlet ConvertTo-Html bereit:

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

Sie können den Inhalt einer Datei auch abrufen, indem Sie ihrem Anbieterpfad das Dollarzeichen ($) voranschreiben. Der Pfad muss aufgrund von Einschränkungen bei der Variablenbenennung 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

Dieser Befehl fügt die Zeichenfolge "Testinhalt" an die Test.txt Datei an:

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

Dieser Befehl ersetzt den Inhalt der Test.txt Datei durch die Zeichenfolge "Testinhalt":

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

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

Durchlaufen des Inhalts einer Datei

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

Sie können den Delimiter-Parameter verwenden, um ein alternatives Trennzeichen anzugeben. 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 Worten "Ende des Mitarbeiterdatensatzes" enden und in der $e Variablen gespeichert werden.

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

Weitere Informationen zum Get-Content Cmdlet finden Sie im Hilfethema für 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 Sicherheitsbeschreibungen

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 finden Sie unter Leiten Sie den Befehl an das Cmdlet Get-Member weiter, oder sehen Sie sich die FileSecurity-Klasse an.

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 von Dateien

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

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

Erstellen einer Datei mit Inhalt

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

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\ddumbenannt:

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

Löschen von Dateien und Verzeichnissen

Löschen von Dateien

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

Remove-Item -Path test.txt

Löschen von Dateien mithilfe von Feldhaltern

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

Remove-Item -Path *.xml

Starten eines Programms durch Aufrufen einer zugeordneten Datei

Aufrufen einer Datei

Das Cmdlet Get-Service zum Abrufen von Informationen zu lokalen Diensten und leitet die Informationen 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 die Systemdateien im aktuellen Verzeichnis und seinen Unterverzeichnissen ab.

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

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

Get-ChildItem -File -System -Recurse

Abrufen ausgeblendeter Dateien

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

Es verwendet den Attributes-Parameter mit zwei Werten, !Directory+Hiddender ausgeblendete Dateien abruft, und !Directory, der 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 die Dateien im aktuellen Verzeichnis ab, die entweder komprimiert oder verschlüsselt sind.

Es verwendet den Attributes-Parameter 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 Cmdletparameter, die von einem PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet auf dem Laufwerk mit Anbieteraktivierung verwendet wird.

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 mit der Big-Endian-Bytereihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mit der Big-Endian-Bytereihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mit der Bytereihenfolge 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

Trennzeichenzeichenfolge <>

Gibt das Trennzeichen an, mit Get-Content dem die Datei beim Lesen in Objekte unterteilt wird.

Der Standardwert ist \n, das Zeilenendezeichen.

Gibt beim Lesen einer Textdatei Get-Content eine Auflistung von Zeichenfolgenobjekten zurück, die jeweils mit dem Trennzeichen endet.

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 das letzte Element in jedem Dateiabschnitt.

Hinweis

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

Unterstützte Cmdlets

  • Get-Content

SwitchParameter warten <>

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, überprüft die Datei einmal pro Sekunde, 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 Attributes-Parameter wurde in Windows PowerShell 3.0 eingeführt.

Der Attributes-Parameter unterstützt die folgenden Attribute:

  • Archivieren
  • Compressed
  • Device
  • Verzeichnis
  • Verschlüsselt
  • Hidden
  • 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

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

Unterstützte Cmdlets

  • Get-ChildItem

Verzeichnis <SwitchParameter>

Ruft die Verzeichnisse (Ordner) ab.

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

Um nur Verzeichnisse abzurufen, verwenden Sie den Directory-Parameter , und lassen Sie den File-Parameter weg. Um Verzeichnisse auszuschließen, verwenden Sie den File-Parameter , und lassen Sie den Directory-Parameter weg, oder verwenden Sie den Attribute-Parameter .

Unterstützte Cmdlets

  • Get-ChildItem

DateiswitchParameter <>

Ruft die Dateien ab.

Der Dateiparameter wurde in Windows PowerShell 3.0 eingeführt.

Um nur Dateien abzurufen, verwenden Sie den File-Parameter , und lassen Sie den Directory-Parameter weg. Um Dateien auszuschließen, verwenden Sie den Directory-Parameter , und lassen Sie den File-Parameter weg, oder verwenden Sie den Attributes-Parameter .

Unterstützte Cmdlets

  • Get-ChildItem

Ausgeblendeter <SwitchParameter>

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

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

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

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 Attributes-Parameters . Verwenden Sie den Attribute-Parameter , um schreibgeschützte Elemente auszuschließen.

Unterstützte Cmdlets

  • Get-ChildItem

System <SwitchParameter>

Ruft nur die Systemdateien und -verzeichnisse (Ordner) ab.

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

Um nur Systemdateien und -ordner abzurufen, verwenden Sie den Systemparameter , seinen as Alias oder den Systemwert des Parameters Attributes . Um Systemdateien und -ordner auszuschließen, verwenden Sie den Attribute-Parameter .

Unterstützte Cmdlets

  • Get-ChildItem

NewerThan <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. eines, 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

<Stream Zeichenfolge>

Verwaltet alternative Datenströme. Geben Sie den Namen des Stroms ein. Feldhalter sind nur in Get-Item für- und Remove-Item -Befehlen 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 Elements angeben, das mit New-Itemerstellt werden soll.

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

Unterstützte Cmdlets

  • New-Item

Verwenden der Pipeline

Anbieter-Cmdlets akzeptieren Pipelineeingaben. Sie können die Pipeline verwenden, um die Aufgabe zu 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-Verweisen 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 in einem Dateisystemlaufwerk aus, oder verwenden Sie den Path-Parameter von, Get-Help um ein Dateisystemlaufwerk anzugeben.

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

Weitere Informationen