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.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
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
, Junction
und 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 ->
Navigieren in den FileSystem-Laufwerken
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 $e
abzurufen. 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+Hidden
die 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 \n
das 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 $False
zurü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 $False
zurü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-Item
Elements 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: