about_FileSystem_Provider
Providernaam
Bestandssysteem
Aandrijfeenheden
C:
, D:
, Temp:
...
Functies
Filter, ShouldProcess
Korte beschrijving
Biedt toegang tot bestanden en mappen.
Gedetailleerde beschrijving
Met de PowerShell-bestandssysteemprovider kunt u bestanden en mappen in PowerShell ophalen, toevoegen, wijzigen, wissen en verwijderen.
De bestandssysteemstations zijn een hiërarchische naamruimte met de mappen en bestanden op uw computer. Een bestandssysteemstation kan een logisch of fysiek station, map of toegewezen netwerkshare zijn.
Vanaf PowerShell versie 7.0 wordt een station dat wordt aangeroepen TEMP:
, toegewezen aan het tijdelijke mappad van de gebruiker. PowerShell gebruikt de methode .NET GetTempPath() om de locatie van de tijdelijke map te bepalen. In Windows is de locatie hetzelfde als $env:TEMP
. Op niet-Windows-systemen is de locatie hetzelfde als $env:TMPDIR
of /tmp
als de omgevingsvariabele niet is gedefinieerd.
De provider van het bestandssysteem ondersteunt de volgende cmdlets, die in dit artikel worden behandeld.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Item aanroepen
- Verplaatsen-item
- Nieuw item
- Item verwijderen
- Get-ItemProperty
- Set-ItemProperty
- Item wissen
- Clear-ItemProperty
- Item verwijderen
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Typen die door deze provider worden weergegeven
Bestanden zijn exemplaren van de klasse System.IO.FileInfo . Directory's zijn exemplaren van de klasse System.IO.DirectoryInfo .
Navigeren in de bestandssysteemstations
De FileSystem-provider maakt de gegevensarchieven beschikbaar door logische stations op de computer toe tewijsen als PowerShell-stations. Als u wilt werken met een bestandssysteemstation , kunt u uw locatie wijzigen in een station met behulp van de stationsnaam gevolgd door een dubbele punt (:
).
Set-Location C:
U kunt ook met de bestandssysteemprovider werken vanaf een ander PowerShell-station. Als u wilt verwijzen naar een bestand of map vanaf een andere locatie, gebruikt u de naam van het station (C:
, D:
, ...) in het pad.
Notitie
PowerShell maakt gebruik van aliassen om u vertrouwd te laten werken met providerpaden. Opdrachten zoals dir
en ls
zijn nu aliassen voor Get-ChildItem, cd
is een alias voor Set-Location. en pwd
is een alias voor Get-Location.
Bestanden en mappen downloaden
De Get-ChildItem
cmdlet retourneert alle bestanden en mappen op de huidige locatie. U kunt een ander pad opgeven voor het zoeken en gebruiken van ingebouwde parameters om de recursiediepte te filteren en te beheren.
Get-ChildItem
Zie Get-ChildItem voor meer informatie over het gebruik van cmdlets.
Bestanden en mappen kopiëren
Met de Copy-Item
cmdlet worden bestanden en mappen gekopieerd naar een locatie die u opgeeft.
Parameters zijn beschikbaar om te filteren en recurse, vergelijkbaar met Get-ChildItem
.
Met de volgende opdracht worden alle bestanden en mappen onder het pad C:\temp gekopieerd naar de map C:\Windows\Temp.
Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File
Copy-Item
Overschrijft bestanden in de doelmap zonder dat u om bevestiging wordt gevraagd.
Met deze opdracht kopieert u het a.txt
bestand van de C:\a
map naar de C:\a\bb
map.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Kopieert alle mappen en bestanden in de C:\a
map naar de C:\c
map. Als er al een van de mappen bestaat die moeten worden gekopieerd in de doelmap, mislukt de opdracht tenzij u de parameter Force opgeeft.
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
Zie Copy-Item voor meer informatie.
Bestanden en mappen verplaatsen
Met deze opdracht wordt het c.txt
bestand in de C:\a
map verplaatst naar de C:\a\aa
map:
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
Met de opdracht wordt niet automatisch een bestaand bestand met dezelfde naam overschreven. Als u wilt afdwingen dat de cmdlet een bestaand bestand overschrijft, geeft u de parameter Force op.
U kunt een map niet verplaatsen wanneer deze map de huidige locatie is. Wanneer u Move-Item
de map op de huidige locatie verplaatst, ziet u deze fout.
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
Bestandsinhoud beheren
De inhoud van een bestand ophalen
Met deze opdracht wordt de inhoud van het bestand 'Test.txt' opgehaald en weergegeven in de console.
Get-Content -Path Test.txt
U kunt de inhoud van het bestand doorsluisen naar een andere cmdlet. Met de volgende opdracht wordt bijvoorbeeld de inhoud van het Test.txt
bestand gelezen en vervolgens geleverd als invoer voor de cmdlet ConvertTo-Html :
Get-Content -Path Test.txt | ConvertTo-Html
U kunt ook de inhoud van een bestand ophalen door het providerpad vooraf te laten gaan met het dollarteken ($
). Het pad moet tussen accolades staan vanwege variabele naamgevingsbeperkingen. Zie about_Variables voor meer informatie.
${C:\Windows\System32\Drivers\etc\hosts}
Inhoud toevoegen aan een bestand
Met deze opdracht wordt de tekenreeks 'testinhoud' toegevoegd aan het Test.txt
bestand:
Add-Content -Path test.txt -Value "test content"
De bestaande inhoud in het Test.txt
bestand wordt niet verwijderd.
De inhoud van een bestand vervangen
Met deze opdracht wordt de inhoud van het Test.txt
bestand vervangen door de tekenreeks testinhoud:
Set-Content -Path test.txt -Value "test content"
De inhoud van Test.txt
. U kunt de waardeparameter van de cmdlet New-Item gebruiken om inhoud toe te voegen aan een bestand wanneer u deze maakt.
De inhoud van een bestand doorlopen
De cmdlet maakt standaard Get-Content
gebruik van het einde van de regel als scheidingsteken, zodat het een bestand als een verzameling tekenreeksen krijgt, waarbij elke regel als één tekenreeks in het bestand wordt weergegeven.
U kunt de -Delimiter
parameter gebruiken om een alternatief scheidingsteken op te geven. Als u dit instelt op de tekens die het einde van een sectie of het begin van de volgende sectie aangeven, kunt u het bestand splitsen in logische onderdelen.
Met de eerste opdracht wordt het Employees.txt
bestand opgehaald en gesplitst in secties, die elk eindigen met de woorden 'Einde van werknemersrecord' en het bestand wordt opgeslagen in de $e
variabele.
De tweede opdracht maakt gebruik van matrix notatie om het eerste item in de verzameling in $e
te halen. Er wordt een index van 0 gebruikt, omdat PowerShell-matrices op nul zijn gebaseerd.
Zie het Help-onderwerp voor de Get-Content voor meer informatie over Get-Content
cmdlets.
Zie about_Arrays voor meer informatie over matrices.
$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
Beveiligingsdescriptors beheren
De ACL voor een bestand weergeven
Met deze opdracht wordt een System.Security.AccessControl.FileSecurity-object geretourneerd:
Get-Acl -Path test.txt | Format-List -Property *
Voor meer informatie over dit object sluist u de opdracht door naar de cmdlet Get-Member . Of zie de FileSecurity-klasse .
De ACL voor een bestand wijzigen
Een ACL voor een bestand maken en instellen
Bestanden en mappen maken
Een map maken
Met deze opdracht maakt u de logfiles
map op het C
station:
New-Item -Path c:\ -Name logfiles -Type directory
PowerShell bevat ook een mkdir
functie (alias md
) die gebruikmaakt van de cmdlet New-Item om een nieuwe map te maken.
Een bestand maken
Met deze opdracht maakt u het log2.txt
bestand in de C:\logfiles
map en voegt u vervolgens de tekenreeks testlogboek toe aan het bestand:
New-Item -Path c:\logfiles -Name log2.txt -Type file
Een bestand met inhoud maken
Hiermee maakt u een bestand met de naam log2.txt
in de C:\logfiles
map en voegt u de tekenreeks 'testlogboek' toe aan het bestand.
New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"
De naam van bestanden en mappen wijzigen
De naam van een bestand wijzigen
Met deze opdracht wordt de naam van het a.txt
bestand in de C:\a
map gewijzigd b.txt
in:
Rename-Item -Path c:\a\a.txt -NewName b.txt
De naam van een map wijzigen
Met deze opdracht wordt de naam van de C:\a\cc
map gewijzigd in C:\a\dd
:
Rename-Item -Path c:\a\cc -NewName dd
Bestanden en mappen verwijderen
Een bestand verwijderen
Met deze opdracht verwijdert u het Test.txt
bestand in de huidige map:
Remove-Item -Path test.txt
Bestanden verwijderen met jokertekens
Met deze opdracht verwijdert u alle bestanden in de huidige map met de .xml
bestandsnaamextensie:
Remove-Item -Path *.xml
Een programma starten door een gekoppeld bestand aan te roepen
Een bestand aanroepen
De eerste opdracht maakt gebruik van de Get-Service-cmdlet om informatie over lokale services op te halen.
De gegevens worden doorgelicht naar de cmdlet Export-CSV en worden vervolgens opgeslagen in het Services.csv
bestand.
De tweede opdracht maakt gebruik van Invoke-Item om het services.csv
bestand te openen in het programma dat is gekoppeld aan de .csv
extensie:
Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv
Bestanden en mappen met opgegeven kenmerken verkrijgen
Systeembestanden ophalen
Met deze opdracht worden systeembestanden in de huidige map en de bijbehorende submappen opgeslagen.
Hierbij wordt de -File
parameter gebruikt om alleen bestanden (niet mappen) en de -System
parameter op te halen om alleen items met het kenmerk 'systeem' op te halen.
De parameter gebruikt de -Recurse
parameter om de items op te halen in de huidige map en alle submappen.
Get-ChildItem -File -System -Recurse
Verborgen bestanden ophalen
Met deze opdracht worden alle bestanden, inclusief verborgen bestanden, in de huidige map opgeslagen.
De parameter Kenmerken wordt gebruikt met twee waarden, !Directory+Hidden
waarmee verborgen bestanden worden opgehaald en !Directory
alle andere bestanden worden opgehaald.
Get-ChildItem -Attributes !Directory,!Directory+Hidden
dir -att !d,!d+h
is het equivalent van deze opdracht.
Gecomprimeerde en versleutelde bestanden ophalen
Met deze opdracht worden bestanden opgehaald in de huidige map die zijn gecomprimeerd of versleuteld.
De parameter wordt gebruikt -Attributes
met twee waarden en Compressed
Encrypted
. De waarden worden gescheiden door een komma ,
die de operator OR vertegenwoordigt.
Get-ChildItem -Attributes Compressed,Encrypted
Dynamische parameters
Dynamische parameters zijn cmdlet-parameters die worden toegevoegd door een PowerShell-provider en zijn alleen beschikbaar wanneer de cmdlet wordt gebruikt in het station met provider.
Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Hiermee geeft u de bestandscodering op. De standaardwaarde is ASCII.
- ASCII: gebruikt de codering voor de ASCII-tekenset (7-bits).
- BigEndianUnicode: Codeert in UTF-16-indeling met de bytevolgorde big-endian.
- Tekenreeks: gebruikt het coderingstype voor een tekenreeks.
- Unicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde little-endian.
- UTF7: Codeert in UTF-7-indeling.
- UTF8: Codeert in UTF-8-indeling.
- UTF8BOM: Codeert in UTF-8-indeling met Byte Order Mark (BOM)
- UF8NOBOM: Codeert in UTF-8-indeling zonder Byte Order Mark (BOM)
- UTF32: Codeert in UTF-32-indeling.
- Standaard: codeert op de standaard geïnstalleerde codepagina.
- OEM: maakt gebruik van de standaardcodering voor MS-DOS en consoleprogramma's.
- Onbekend: het coderingstype is onbekend of ongeldig. De gegevens kunnen worden behandeld als binair.
Ondersteunde cmdlets
Scheidingsteken <system.string>
Hiermee geeft u het scheidingsteken op dat door Get-Content wordt gebruikt om het bestand te verdelen in objecten terwijl het wordt gelezen.
De standaardwaarde is \n
, het einde van regelteken.
Bij het lezen van een tekstbestand retourneert Get-Content een verzameling tekenreeksobjecten, die elk eindigen met het scheidingsteken.
Als u een scheidingsteken invoert dat niet in het bestand bestaat, retourneert Get-Content het hele bestand als één niet-gescheiden object.
U kunt deze parameter gebruiken om een groot bestand op te splitsen in kleinere bestanden door een bestandsscheidingsteken op te geven, zoals 'Einde van voorbeeld', als scheidingsteken. Het scheidingsteken blijft behouden (niet verwijderd) en wordt het laatste item in elke bestandssectie.
Notitie
Wanneer de waarde van de -Delimiter
parameter momenteel een lege tekenreeks is, retourneert Get-Content niets. Dit is een bekend probleem. Als u wilt afdwingen dat Get-Content het hele bestand als één, niet-gescheiden tekenreeks retourneert, voert u een waarde in die niet in het bestand bestaat.
Ondersteunde cmdlets
Wait <System.Management.Automation.SwitchParameter>
Wacht totdat inhoud aan het bestand is toegevoegd. Als inhoud wordt toegevoegd, wordt de toegevoegde inhoud geretourneerd. Als de inhoud is gewijzigd, wordt het hele bestand geretourneerd.
Wanneer u wacht, controleert Get-Content het bestand eenmaal per seconde totdat u het onderbreekt, bijvoorbeeld door op Ctrl+C te drukken.
Ondersteunde cmdlets
Kenmerken FlagsExpression <>
Hiermee haalt u bestanden en mappen op met de opgegeven kenmerken. Deze parameter ondersteunt alle kenmerken en stelt u in staat complexe combinaties van kenmerken op te geven.
De -Attributes
parameter is geïntroduceerd in Windows PowerShell 3.0.
De -Attributes
parameter ondersteunt de volgende kenmerken:
- Archiveren
- Gecomprimeerd
- Apparaat
- Directory
- Versleuteld
- Verborgen
- Normaal
- NotContentIndexed
- Offline
- Readonly
- ReparsePoint
- SparseFile
- Systeem
- Tijdelijk
Zie de opsomming FileAttributes voor een beschrijving van deze kenmerken.
Gebruik de volgende operators om kenmerken te combineren.
!
- NIET+
- EN,
- OF
Er zijn geen spaties toegestaan tussen een operator en het kenmerk ervan. Spaties zijn echter toegestaan vóór komma's.
Ondersteunde cmdlets
Directory <System.Management.Automation.SwitchParameter>
Hiermee haalt u mappen (mappen) op.
De -Directory
parameter is geïntroduceerd in Windows PowerShell 3.0.
Als u alleen mappen wilt ophalen, gebruikt u de -Directory
parameter en laat u de -File
parameter weg. Als u mappen wilt uitsluiten, gebruikt u de -File
parameter en laat u de -Directory
parameter weg of gebruikt u de -Attributes
parameter.
Ondersteunde cmdlets
File <System.Management.Automation.SwitchParameter>
Bestanden worden opgeslagen.
De -File
parameter is geïntroduceerd in Windows PowerShell 3.0.
Als u alleen bestanden wilt ophalen, gebruikt u de -File
parameter en laat u de -Directory
parameter weg. Als u bestanden wilt uitsluiten, gebruikt u de -Directory
parameter en laat u de -File
parameter weg of gebruikt u de -Attributes
parameter.
Ondersteunde cmdlets
Verborgen <System.Management.Automation.SwitchParameter>
Hiermee worden alleen verborgen bestanden en mappen (mappen) opgeslagen. Get-ChildItem krijgt standaard alleen niet-verborgen items.
De -Hidden
parameter is geïntroduceerd in Windows PowerShell 3.0.
Als u alleen verborgen items wilt ophalen, gebruikt u de parameter, de -Hidden
bijbehorende h
aliassen of ah
de verborgen waarde van de -Attributes
parameter. Als u verborgen items wilt uitsluiten, laat u de -Hidden
parameter weg of gebruikt u de -Attributes
parameter.
Ondersteunde cmdlets
ReadOnly <System.Management.Automation.SwitchParameter>
Hiermee worden alleen alleen-lezenbestanden en mappen (mappen) opgeslagen.
De -ReadOnly
parameter is geïntroduceerd in Windows PowerShell 3.0.
Als u alleen-lezenitems wilt ophalen, gebruikt u de -ReadOnly
parameter, ar
de alias of de ReadOnly-waarde van de -Attributes
parameter. Als u alleen-lezenitems wilt uitsluiten, gebruikt u de -Attributes
parameter.
Ondersteunde cmdlets
System <System.Management.Automation.SwitchParameter>
Hiermee worden alleen systeembestanden en mappen (mappen) opgeslagen.
De -System
parameter is geïntroduceerd in Windows PowerShell 3.0.
Als u alleen systeembestanden en mappen wilt ophalen, gebruikt u de -System
parameter, as
de alias of de systeemwaarde van de -Attributes
parameter. Als u systeembestanden en mappen wilt uitsluiten, gebruikt u de -Attributes
parameter.
Ondersteunde cmdlets
NewerThan <System.DateTime>
Retourneert $True
wanneer de LastWriteTime
waarde van een bestand groter is dan de opgegeven datum. Anders wordt het geretourneerd $False
.
Voer een DateTime-object in, zoals een object dat door de cmdlet Get-Date wordt geretourneerd, of een tekenreeks die kan worden geconverteerd naar een DateTime-object , zoals "August 10, 2011 2:00 PM"
.
Ondersteunde cmdlets
OlderThan <System.DateTime>
Retourneert $True
wanneer de LastWriteTime
waarde van een bestand kleiner is dan de opgegeven datum. Anders wordt het geretourneerd $False
.
Voer een DateTime-object in, zoals een object dat door de cmdlet Get-Date wordt geretourneerd, of een tekenreeks die kan worden geconverteerd naar een DateTime-object , zoals "August 10, 2011 2:00 PM"
.
Ondersteunde cmdlets
Stream <System.String>
Beheert alternatieve gegevensstromen. Voer de naam van de stream in. Jokertekens zijn alleen toegestaan in Get-Item voor opdrachten en Remove-Item in een bestandssysteemstation.
Ondersteunde cmdlets
Raw <SwitchParameter>
Hiermee worden nieuwe regeltekens genegeerd. Retourneert inhoud als één item.
Ondersteunde cmdlets
ItemType-tekenreeks <>
Met deze parameter kunt u de tye van het item opgeven dat moet worden gemaakt met New-Item
De beschikbare waarden van deze parameter zijn afhankelijk van de huidige provider die u gebruikt.
In een FileSystem
station zijn de volgende waarden toegestaan:
- File
- Directory
- SymbolicLink
- Verbinding
- Hardlink
Ondersteunde cmdlets
De pijplijn gebruiken
Provider-cmdlets accepteren pijplijninvoer. U kunt de pijplijn gebruiken om de taak te vereenvoudigen door providergegevens van de ene cmdlet naar een andere provider-cmdlet te verzenden. Zie de cmdlet-verwijzingen in dit artikel voor meer informatie over het gebruik van de pijplijn met provider-cmdlets.
Ondersteuning vragen
Vanaf Windows PowerShell 3.0 kunt u aangepaste Help-onderwerpen krijgen voor provider-cmdlets die uitleggen hoe deze cmdlets zich gedragen in een bestandssysteemstation.
Als u de Help-onderwerpen wilt ophalen die zijn aangepast voor het bestandssysteemstation, voert u een Get-Help-opdracht uit in een bestandssysteemstation of gebruikt u de -Path
parameter Get-Help om een bestandssysteemstation op te geven.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: