FileSystem provider

Anbietername

FileSystem

Laufwerke

C:, D: ...

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 phsyisches Laufwerk, ein Verzeichnis oder eine zugeordnete Netzwerkfreigabe sein.

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 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, das den Laufwerksnamen gefolgt von einem Doppelpunkt (:) enthält.

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

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

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 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 Cmdlets New-Item 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. Es wird ein Index von 0 verwendet, da PowerShell-Arrays nullbasiert sind.

Weitere Informationen zum Get-Content Cmdlet finden Sie im Hilfethema zu 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 Zugriffssteuerungsliste 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 übergeben. Oder siehe FileSecurity-Klasse .

Ändern der ACL für eine Datei

Create und Festlegen einer ACL für eine Datei

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 Cmdlet New-Item 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

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

Sie leitet die Informationen an das Cmdlet Export-Csv weiter und speichert diese Informationen dann in der Services.csv Datei.

Der zweite Befehl verwendet Invoke-Item , um die Datei in dem services.csv 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

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 -Recurse -Parameter, 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 und CompressedEncrypted. 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.

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 Big-Endian-Bytereihenfolge.
  • Zeichenfolge: Verwendet den Codierungstyp für eine Zeichenfolge.
  • Unicode: Codiert im UTF-16-Format unter Verwendung der Little-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 standardmäßig installierten Codepage.
  • 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 Zeilenendezeichen.

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

Bei Eingabe eines Trennzeichens, 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, 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 derzeit nichts zurück. Dieses Problem ist bekannt. 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 Sie <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

Verzeichnis <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 weg. Um Verzeichnisse auszuschließen, verwenden Sie den -File -Parameter, und lassen Sie den -Directory Parameter weg, oder verwenden Sie den -Attributes -Parameter.

Unterstützte Cmdlets

Dateisystem.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 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

Ausgeblendete <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, seine h Aliase oder ah den Hidden-Wert des -Attributes Parameters. Um ausgeblendete Elemente auszuschließen, lassen Sie den -Hidden Parameter aus, oder verwenden Sie den -Attributes Parameter.

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

Unterstützte Cmdlets

System <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 den -Attributes -Parameter, um Systemdateien und -ordner auszuschließen.

Unterstützte Cmdlets

NewerThan <System.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 <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. 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

<Stream System.String>

Verwaltet alternative Datenströme. Geben Sie den Namen des Stroms ein. Feldhalter sind nur in den Befehlen Get-Item for und Remove-Item in einem Dateisystemlaufwerk zulässig.

Unterstützte Cmdlets

Raw <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 Tye des Elements angeben, mit dem erstellt werden soll. New-Item

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

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

about_Providers