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.
- 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
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 .
Navigieren mit den FileSystem-Laufwerken
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 dir
ls
. 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\bb
C:\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:\a
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
Dieser Befehl verschiebt die c.txt
Datei im Verzeichnis in das C:\a
C:\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 $e
abzurufen. 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+Hidden
die 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 $False
zurü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 $False
zurü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: