about_FileSystem_Provider

Providernamn

Filsystem

Enheter

C:, D:, Temp: ...

Funktioner

Filter, ShouldProcess

Kort beskrivning

Ger åtkomst till filer och kataloger.

Detaljerad beskrivning

Med PowerShell FileSystem-providern kan du hämta, lägga till, ändra, rensa och ta bort filer och kataloger i PowerShell.

FileSystem-enheterna är ett hierarkiskt namnområde som innehåller katalogerna och filerna på datorn. En FileSystem-enhet kan vara en logisk eller fysisk enhet, katalog eller mappad nätverksresurs.

Från och med PowerShell version 7.0 mappas en enhet med namnet TEMP: till användarens tillfälliga katalogsökväg. PowerShell använder metoden .NET GetTempPath() för att fastställa platsen för den tillfälliga mappen. I Windows är platsen samma som $env:TEMP. I icke-Windows-system är platsen samma som $env:TMPDIR eller /tmp om miljövariabeln inte har definierats.

FileSystem-providern stöder följande cmdletar, som beskrivs i den här artikeln.

Typer som exponeras av den här providern

Filer är instanser av klassen System.IO.FileInfo . Kataloger är instanser av klassen System.IO.DirectoryInfo .

FileSystem-providern exponerar sina datalager genom att mappa logiska enheter på datorn som PowerShell-enheter. Om du vill arbeta med en FileSystem-enhet kan du ändra din plats till en enhet med hjälp av enhetsnamnet följt av ett kolon (:).

Set-Location C:

Du kan också arbeta med FileSystem-providern från andra PowerShell-enheter. Om du vill referera till en fil eller katalog från en annan plats använder du enhetsnamnet (C:, D:, ...) i sökvägen.

Anteckning

PowerShell använder alias för att ge dig ett välbekant sätt att arbeta med providersökvägar. Kommandon som dir och ls är nu alias för Get-ChildItem, cd är ett alias för Set-Location. och pwd är ett alias för Get-Location.

Hämta filer och kataloger

Cmdleten Get-ChildItem returnerar alla filer och kataloger på den aktuella platsen. Du kan ange en annan sökväg för att söka efter och använda inbyggda parametrar för att filtrera och kontrollera rekursionsdjupet.

Get-ChildItem

Mer information om cmdlet-användning finns i Get-ChildItem.

Kopiera filer och kataloger

Cmdleten Copy-Item kopierar filer och kataloger till en plats som du anger. Parametrar är tillgängliga för att filtrera och upprepa, ungefär som Get-ChildItem.

Följande kommando kopierar alla filer och kataloger under sökvägen "C:\temp" till mappen "C:\Windows\Temp".

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item skriver över filer i målkatalogen utan att be om bekräftelse.

Det här kommandot kopierar a.txt filen från C:\a katalogen till C:\a\bb katalogen.

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

Kopierar alla kataloger och filer i C:\a katalogen till C:\c katalogen. Om någon av de kataloger som ska kopieras redan finns i målkatalogen misslyckas kommandot om du inte anger force-parametern.

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

Mer information finns i Kopiera objekt.

Flytta filer och kataloger

Det här kommandot flyttar c.txt filen i C:\a katalogen till C:\a\aa katalogen:

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

Kommandot skriver inte över en befintlig fil som har samma namn automatiskt. Om du vill tvinga cmdleten att skriva över en befintlig fil anger du parametern Force.

Du kan inte flytta en katalog när katalogen är den aktuella platsen. När du använder Move-Item för att flytta katalogen på den aktuella platsen visas det här felet.

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

Hantera filinnehåll

Hämta innehållet i en fil

Det här kommandot hämtar innehållet i filen "Test.txt" och visar dem i -konsolen.

Get-Content -Path Test.txt

Du kan skicka innehållet i filen till en annan cmdlet. Följande kommando läser till exempel innehållet i Test.txt filen och tillhandahåller dem sedan som indata till cmdleten ConvertTo-Html :

Get-Content -Path Test.txt | ConvertTo-Html

Du kan också hämta innehållet i en fil genom att prefixera dess providersökväg med dollartecknet ($). Sökvägen måste omges av klammerparenteser på grund av begränsningar för variabelnamngivning. Mer information finns i about_Variables.

${C:\Windows\System32\Drivers\etc\hosts}

Lägga till innehåll i en fil

Det här kommandot lägger till strängen "testinnehåll" i Test.txt filen:

Add-Content -Path test.txt -Value "test content"

Det befintliga innehållet i Test.txt filen tas inte bort.

Ersätt innehållet i en fil

Det här kommandot ersätter innehållet i Test.txt filen med strängen "testinnehåll":

Set-Content -Path test.txt -Value "test content"

Det skriver över innehållet i Test.txt. Du kan använda värdeparametern för cmdleten New-Item för att lägga till innehåll i en fil när du skapar den.

Loopa igenom innehållet i en fil

Som standard Get-Content använder cmdleten radslutstecknet som avgränsare, så den hämtar en fil som en samling strängar, med varje rad som en sträng i filen.

Du kan använda parametern -Delimiter för att ange en alternativ avgränsare. Om du ställer in den på de tecken som anger slutet av ett avsnitt eller början av nästa avsnitt kan du dela upp filen i logiska delar.

Det första kommandot hämtar Employees.txt filen och delar upp den i avsnitt, där var och en slutar med orden "End of Employee Record" och sparar den i variabeln $e .

Det andra kommandot använder matrisnotation för att hämta det första objektet i samlingen i $e. Det använder ett index på 0, eftersom PowerShell-matriser är nollbaserade.

Mer information om Get-Content cmdlet finns i hjälpavsnittet för Get-Content.

Mer information om matriser finns i about_Arrays.

$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

Hantera säkerhetsbeskrivningar

Visa ACL för en fil

Det här kommandot returnerar ett System.Security.AccessControl.FileSecurity-objekt :

Get-Acl -Path test.txt | Format-List -Property *

Om du vill ha mer information om det här objektet kan du skicka kommandot till cmdleten Get-Member . Eller se FileSecurity Class.

Ändra ACL för en fil

Skapa och ange en ACL för en fil

Skapa filer och kataloger

Skapa en katalog

Det här kommandot skapar logfiles katalogen på C enheten:

New-Item -Path c:\ -Name logfiles -Type directory

PowerShell innehåller också en mkdir funktion (alias md) som använder cmdleten New-Item för att skapa en ny katalog.

Skapa en fil

Det här kommandot skapar log2.txt filen i C:\logfiles katalogen och lägger sedan till strängen "testlogg" i filen:

New-Item -Path c:\logfiles -Name log2.txt -Type file

Skapa en fil med innehåll

Skapar en fil med namnet log2.txt i C:\logfiles katalogen och lägger till strängen "testlogg" i filen.

New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"

Byta namn på filer och kataloger

Byt namn på en fil

Det här kommandot byter namn på a.txt filen i C:\a katalogen till b.txt:

Rename-Item -Path c:\a\a.txt -NewName b.txt

Byt namn på en katalog

Det här kommandot byter namn på C:\a\cc katalogen till C:\a\dd:

Rename-Item -Path c:\a\cc -NewName dd

Ta bort filer och kataloger

Ta bort en fil

Det här kommandot tar Test.txt bort filen i den aktuella katalogen:

Remove-Item -Path test.txt

Ta bort filer med jokertecken

Det här kommandot tar bort alla filer i den aktuella katalogen som har filnamnstillägget .xml :

Remove-Item -Path *.xml

Starta ett program genom att anropa en associerad fil

Anropa en fil

Det första kommandot använder cmdleten Get-Service för att hämta information om lokala tjänster.

Den skickar informationen till cmdleten Export-Csv och lagrar sedan informationen Services.csv i filen.

Det andra kommandot använder Invoke-Item för att öppna services.csv filen i programmet som är associerat med .csv tillägget:

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Hämta filer och mappar med angivna attribut

Hämta systemfiler

Det här kommandot hämtar systemfiler i den aktuella katalogen och dess underkataloger.

Den använder parametern -File för att endast hämta filer (inte kataloger) och parametern -System för att endast hämta objekt med attributet "system".

Den använder parametern -Recurse för att hämta objekten i den aktuella katalogen och alla underkataloger.

Get-ChildItem -File -System -Recurse

Hämta dolda filer

Det här kommandot hämtar alla filer, inklusive dolda filer, i den aktuella katalogen.

Den använder parametern Attribut med två värden, !Directory+Hidden, som hämtar dolda filer och !Directory, som hämtar alla andra filer.

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -att !d,!d+h är motsvarigheten till det här kommandot.

Hämta komprimerade och krypterade filer

Det här kommandot hämtar filer i den aktuella katalogen som antingen komprimeras eller krypteras.

Den använder parametern -Attributes med två värden och CompressedEncrypted. Värdena avgränsas med ett kommatecken , som representerar operatorn "OR".

Get-ChildItem -Attributes Compressed,Encrypted

Dynamiska parametrar

Dynamiska parametrar är cmdlet-parametrar som läggs till av en PowerShell-provider och är endast tillgängliga när cmdleten används på den provideraktiverade enheten.

Kodning <av Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

Anger filkodning. Standardvärdet är ASCII.

  • ASCII: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).
  • BigEndianUnicode: Kodar i UTF-16-format med hjälp av den stora slutpunktsbyteordningen.
  • Sträng: Använder kodningstypen för en sträng.
  • Unicode: Kodar i UTF-16-format med den lite endianska byteordningen.
  • UTF7: Kodar i UTF-7-format.
  • UTF8: Kodar i UTF-8-format.
  • UTF8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
  • UF8NOBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
  • UTF32: Kodar i UTF-32-format.
  • Standard: Kodar på standardsidan för installerad kod.
  • OEM: Använder standardkodning för MS-DOS och konsolprogram.
  • Okänd: Kodningstypen är okänd eller ogiltig. Data kan behandlas som binära.

Cmdletar stöds

Avgränsare <System.String>

Anger avgränsare som Get-Content använder för att dela upp filen i objekt medan den läse.

Standardvärdet är \n, tecknet slut på rad.

När du läser en textfil returnerar Get-Content en samling strängobjekt, som var och en slutar med avgränsarens tecken.

Om du anger en avgränsare som inte finns i filen returnerar Get-Content hela filen som ett enda, oavgränsat objekt.

Du kan använda den här parametern för att dela upp en stor fil i mindre filer genom att ange en filavgränsare, till exempel "Exempelslut", som avgränsare. Avgränsare bevaras (tas inte bort) och blir det sista objektet i varje filavsnitt.

Anteckning

När värdet för parametern -Delimiter för närvarande är en tom sträng returnerar Get-Content ingenting. Detta är ett känt problem. Om du vill tvinga Get-Content att returnera hela filen som en enda, odelbar sträng anger du ett värde som inte finns i filen.

Cmdletar stöds

Vänta på <System.Management.Automation.SwitchParameter>

Väntar på att innehåll ska läggas till i filen. Om innehållet läggs till returneras det bifogade innehållet. Om innehållet har ändrats returneras hela filen.

När du väntar kontrollerar Get-Content filen en gång i sekunden tills du avbryter den, till exempel genom att trycka på CTRL+C.

Cmdletar stöds

Attribut FlaggorUttryckning <>

Hämtar filer och mappar med de angivna attributen. Den här parametern stöder alla attribut och gör att du kan ange komplexa kombinationer av attribut.

Parametern -Attributes introducerades i Windows PowerShell 3.0.

Parametern -Attributes stöder följande attribut:

  • Arkiv
  • Komprimerade
  • Enhet
  • Katalog
  • Krypterad
  • Dold
  • Normal
  • NotContentIndexed
  • Offline
  • Readonly
  • ReparsePoint
  • SparseFile
  • System
  • Tillfälliga

En beskrivning av dessa attribut finns i FileAttributes-uppräkningen .

Använd följande operatorer för att kombinera attribut.

  • ! - INTE
  • + - OCH
  • , - ELLER

Inga blanksteg tillåts mellan en operator och dess attribut. Blanksteg tillåts dock före kommatecken.

Cmdletar stöds

Directory <System.Management.Automation.SwitchParameter>

Hämtar kataloger (mappar).

Parametern -Directory introducerades i Windows PowerShell 3.0.

Om du bara vill hämta kataloger använder du parametern -Directory och utelämnar parametern -File . Om du vill exkludera kataloger använder du parametern -File och utelämnar parametern -Directory eller använder parametern -Attributes .

Cmdletar stöds

File <System.Management.Automation.SwitchParameter>

Hämtar filer.

Parametern -File introducerades i Windows PowerShell 3.0.

Om du bara vill hämta filer använder du parametern -File och utelämnar parametern -Directory . Om du vill exkludera filer använder du parametern -Directory och utelämnar parametern -File eller använder parametern -Attributes .

Cmdletar stöds

Dolt <System.Management.Automation.SwitchParameter>

Hämtar endast dolda filer och kataloger (mappar). Som standard hämtar Get-ChildItem endast icke-dolda objekt.

Parametern -Hidden introducerades i Windows PowerShell 3.0.

Om du bara vill hämta dolda objekt använder du parametern -Hidden , dess h eller ah alias eller det dolda värdet för parametern -Attributes . Om du vill undanta dolda objekt utelämnar du parametern -Hidden eller använder parametern -Attributes .

Cmdletar stöds

ReadOnly <System.Management.Automation.SwitchParameter>

Hämtar endast skrivskyddade filer och kataloger (mappar).

Parametern -ReadOnly introducerades i Windows PowerShell 3.0.

Om du bara vill hämta skrivskyddade objekt använder du parametern -ReadOnly , dess ar alias eller ReadOnly-värdet för parametern -Attributes . Om du vill exkludera skrivskyddade objekt använder du parametern -Attributes .

Cmdletar stöds

System <System.Management.Automation.SwitchParameter>

Hämtar endast systemfiler och kataloger (mappar).

Parametern -System introducerades i Windows PowerShell 3.0.

Om du bara vill hämta systemfiler och mappar använder du parametern -System , dess as alias eller systemvärdet för parametern -Attributes . Om du vill exkludera systemfiler och mappar använder du parametern -Attributes .

Cmdletar stöds

NewerThan <System.DateTime>

Returnerar $True när värdet för LastWriteTime en fil är större än det angivna datumet. Annars returneras $False.

Ange ett DateTime-objekt , till exempel ett som cmdleten Get-Date returnerar, eller en sträng som kan konverteras till ett DateTime-objekt , till exempel "August 10, 2011 2:00 PM".

Cmdletar stöds

OlderThan <System.DateTime>

Returnerar $True när värdet för LastWriteTime en fil är mindre än det angivna datumet. Annars returneras $False.

Ange ett DateTime-objekt , till exempel ett som cmdleten Get-Date returnerar, eller en sträng som kan konverteras till ett DateTime-objekt , till exempel "August 10, 2011 2:00 PM".

Cmdletar stöds

Stream <System.String>

Hanterar alternativa dataströmmar. Ange namnet på strömmen. Jokertecken tillåts endast i kommandona Get-Item för och Remove-Item på en filsystemenhet.

Cmdletar stöds

Raw <SwitchParameter>

Ignorerar nya radtecken. Returnerar innehåll som ett enskilt objekt.

Cmdletar stöds

ItemType-sträng <>

Med den här parametern kan du ange vilken typ av objekt som ska skapas med New-Item

De tillgängliga värdena för den här parametern beror på den aktuella providern som du använder.

I en FileSystem enhet tillåts följande värden:

  • Fil
  • Katalog
  • Symbolisk länk
  • Knutpunkt
  • Hardlink

Cmdletar stöds

Använda pipelinen

Provider-cmdletar accepterar pipelineindata. Du kan använda pipelinen för att förenkla uppgiften genom att skicka providerdata från en cmdlet till en annan provider-cmdlet. Mer information om hur du använder pipelinen med provider-cmdletar finns i cmdlet-referenserna i den här artikeln.

Få hjälp

Från och med Windows PowerShell 3.0 kan du få anpassade hjälpavsnitt för provider-cmdletar som förklarar hur dessa cmdletar beter sig på en filsystemenhet.

Om du vill få hjälpavsnitt som är anpassade för filsystemenheten kör du ett Get-Help-kommando på en filsystemenhet eller använder parametern -PathGet-Help för att ange en filsystemenhet.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

Se även

about_Providers