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, Verzeichnis oder zugeordnete Netzwerkfreigabe sein.

Ab PowerShell Version 7.0 wird ein aufgerufenes Laufwerk 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. Bei 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 .

Der FileSystem-Anbieter macht seine Datenspeicher verfügbar, indem sie logische Laufwerke auf dem Computer als PowerShell-Laufwerke zuordnen. Um mit einem FileSystem-Laufwerk zu arbeiten, können Sie Ihren Speicherort mithilfe des Laufwerknamens ändern, gefolgt von einem Doppelpunkt (:).

Set-Location C:

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

Hinweis

PowerShell verwendet Aliase, um Ihnen eine vertraute Möglichkeit zum Arbeiten mit Anbieterpfaden zu ermöglichen. Befehle wie z dirls . B. aliase für Get-ChildItem sind cd 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 zum Durchsuchen und Verwenden von integrierten Parametern angeben, um die Rekursionstiefe zu filtern und zu steuern.

Get-ChildItem

Weitere Informationen zur Cmdletnutzung finden Sie unter Get-ChildItem.

Kopieren von Dateien und Verzeichnissen

Das Copy-Item Cmdlet kopiert Dateien und Verzeichnisse an einen 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" in den Ordner "C:\Windows\Temp".

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

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

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

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

Kopiert alle Verzeichnisse und Dateien im Verzeichnis in das C:\aC:\c Verzeichnis. Wenn die zu kopierenden Verzeichnisse bereits im Zielverzeichnis vorhanden sind, 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

Dieser Befehl verschiebt die c.txt Datei im Verzeichnis in das C:\aC:\a\aa Verzeichnis:

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

Der Befehl überschreibt nicht automatisch eine vorhandene Datei, die den gleichen Namen hat. Um das Cmdlet zu zwingen, eine vorhandene Datei zu überschreiben, geben Sie den Force-Parameter an.

Ein Verzeichnis kann nicht verschoben werden, wenn das Verzeichnis der aktuelle Speicherort ist. Wenn Sie Move-Item das Verzeichnis an dem 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. Der folgende Befehl liest z. B. den Inhalt der Test.txt Datei und liefert sie dann als Eingabe zum ConvertTo-Html-Cmdlet :

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

Sie können auch den Inhalt einer Datei abrufen, indem Sie seinen Anbieterpfad mit dem Dollarzeichen ($) präfixieren. Der Pfad muss aufgrund variabler Benennungseinschrä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

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 Parameter "Value " des Cmdlets "New-Item " verwenden, um Inhalte zu einer Datei hinzuzufügen, wenn Sie sie erstellen.

Durchlaufen des Inhalts einer Datei

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

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 Wörtern "Ende des Mitarbeiterdatensatzs" 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 Cmdlet finden Sie im Hilfethema für Get-Content den 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 *

Um weitere Informationen zu diesem Objekt zu erhalten, führen Sie den Befehl an das Cmdlet "Get-Member " aus. Oder siehe FileSecurity-Klasse .

Ändern der ACL für eine Datei

Erstellen und Festlegen einer ACL für eine Datei

Erstellen von Dateien und Verzeichnissen

Erstellen eines Verzeichnisses

Dieser Befehl erstellt das logfiles Verzeichnis auf dem C Laufwerk:

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

PowerShell enthält auch eine mkdir Funktion (Alias md), die das Cmdlet "New-Item " verwendet, um ein neues Verzeichnis zu erstellen.

Erstellen von Dateien

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 Datei, die im C:\logfiles Verzeichnis aufgerufen log2.txt wird, 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

Dieser Befehl umbenannt die a.txt Datei im C:\a Verzeichnis in b.txt:

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

Umbenennen eines Verzeichnisses

Dieser Befehl umbenannt 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 von Dateien

Dieser Befehl löscht die Test.txt Datei im aktuellen Verzeichnis:

Remove-Item -Path test.txt

Löschen von Dateien mithilfe von Wildcards

Dieser Befehl löscht alle Dateien im aktuellen Verzeichnis, die über die .xml Dateinamenerweiterung verfügen:

Remove-Item -Path *.xml

Starten eines Programms durch Aufrufen einer zugeordneten Datei

Aufrufen einer Datei

Der erste Befehl verwendet das Get-Service-Cmdlet , um Informationen zu lokalen Diensten abzurufen.

Es wird die Informationen an das Export-Csv-Cmdlet weitergeleitet und dann diese Informationen in der Services.csv Datei gespeichert.

Der zweite Befehl verwendet "Invoke-Item ", um die services.csv Datei im Programm zu öffnen, 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

Abrufen von Systemdateien

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

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

Es verwendet den -Recurse Parameter, um die Elemente im aktuellen Verzeichnis und alle Unterverzeichnisse 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 Parameter Attribute 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 ist das Äquivalent dieses Befehls.

Abrufen komprimierter und verschlüsselter Dateien

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

Er 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 im anbieterfähigen Laufwerk verwendet wird.

Codieren <von Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

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 Groß-Endian-Bytereihenfolge.
  • String: Verwendet den Codierungstyp für eine Zeichenfolge.
  • Unicode: Codiert im UTF-16-Format mithilfe der Klein-Endian-Bytereihenfolge.
  • UTF7: Codiert im UTF-7-Format.
  • UTF8: Codiert im UTF-8-Format.
  • UTF8BOM: Codiert im UTF-8-Format mit Byte Order Mark (BOM)
  • UF8NOBOM: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)
  • UTF32: Codiert im UTF-32-Format.
  • Standard: Codiert in der standard installierten Codeseite.
  • OEM: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • Unbekannt: Der Codierungstyp ist unbekannt oder ungültig. Die Daten können als Binärdateien behandelt werden.

Unterstützte Cmdlets

Trennzeichen <System.String>

Gibt das Trennzeichen an, das Get-Content verwendet, um die Datei in Objekte zu unterteilen, während es liest.

Der Standardwert ist \n, das End-of-Line-Zeichen.

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

Beim Eingeben eines Trennzeichens, das nicht in der Datei vorhanden ist, gibt Get-Content die gesamte Datei als einzelnes, nicht getrenntes Objekt zurück.

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 -Delimiter Parameters 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 eine einzelne Zeichenfolge zurückgibt, geben Sie einen Wert ein, der in der Datei nicht vorhanden ist.

Unterstützte Cmdlets

Warten <von System.Management.Automation.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.

In der Warteschlange überprüft Get-Content die Datei einmal pro Sekunde, bis Sie sie unterbrechen, indem Sie z. B. STRG + C drücken.

Unterstützte Cmdlets

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

Directory <System.Management.Automation.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 aus. Verwenden Sie zum Ausschließen von Verzeichnissen den -File Parameter, und geben Sie den -Directory Parameter aus, oder verwenden Sie den -Attributes Parameter.

Unterstützte Cmdlets

File <System.Management.Automation.SwitchParameter>

Ruft die Dateien ab.

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

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

Unterstützte Cmdlets

Hidden <System.Management.Automation.SwitchParameter>

Ruft nur ausgeblendete Dateien und Verzeichnisse (Ordner) ab. Standardmäßig ruft 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, dessen Aliase h oder ah den ausgeblendeten Wert des -Attributes Parameters. Um ausgeblendete Elemente auszuschließen, müssen Sie den -Hidden Parameter auslassen oder den -Attributes Parameter verwenden.

Unterstützte Cmdlets

ReadOnly <System.Management.Automation.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. Um schreibgeschützte Elemente auszuschließen, verwenden Sie den -Attributes Parameter.

Unterstützte Cmdlets

System.Management.Automation.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 -System Parameter, seinen as Alias oder den Systemwert des -Attributes Parameters. Verwenden Sie zum Ausschließen von Systemdateien und Ordnern den -Attributes Parameter.

Unterstützte Cmdlets

NewerThan <System.DateTime>

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

Geben Sie ein DateTime-Objekt ein, z. B. eine, die 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

OlderThan <System.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. eine, die 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

Stream <System.String>

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

Unterstützte Cmdlets

Unformatierte <SwitchParameter>

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

Unterstützte Cmdlets

ItemType-Zeichenfolge <>

Mit diesem Parameter können Sie den Bindepunkt des Elements angeben, mit dem sie erstellt werden soll. New-Item

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

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

  • Datei
  • Verzeichnis
  • SymbolLink
  • Verbindung
  • HardLink

Unterstützte Cmdlets

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 zum Verwenden der Pipeline mit Anbieter-Cmdlets finden Sie in den cmdlet-Verweisen, die in diesem Artikel bereitgestellt werden.

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:

Siehe auch

about_Providers