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.
- 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 auf den Dateisystemlaufwerken
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 $e
abzurufen. 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.txt
C:\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.txt
umbenannt:
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
umbenannt:
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+Hidden
der 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 Compressed
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.
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 $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 <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. 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: