about_FileSystem_Provider
Providernamn
FileSystem
Drivrutiner
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 kataloger och filer 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.
- Hämta plats
- Ange plats
- Hämta objekt
- Get-ChildItem
- Anropa objekt
- Flytta objekt
- Nytt objekt
- Ta bort objekt
- Get-ItemProperty
- Set-ItemProperty
- Rensa objekt
- Clear-ItemProperty
- Ta bort objekt
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Tilläggsinnehåll
- Rensa innehåll
- Hämta innehåll
- Ange innehåll
Typer som exponeras av den här providern
Filer är instanser av klassen System.IO.FileInfo . Kataloger är instanser av klassen System.IO.DirectoryInfo .
PowerShell Extended Type System lägger till extra egenskaper för dessa objekttyper för att ge ytterligare information. Viss information är plattformsspecifik. De möjliga värdena för egenskapen LinkType beror till exempel på vilken plattform och filsystem som används. Stöd HardLink
för Linux- och macOS-filsystem och SymLink
. Windows NTFS stöder HardLink
, SymLink
, Junction
och flera andra värden för LinkType.
När du använder Get-Item
eller Get-ChildItem
till information om ett länkat objekt innehåller egenskapen Läge en l
som anger att objektet är en länk. Egenskapen LinkType innehåller typen av länk.
AppExecLink
länkar skapas när du installerar ett program från Microsoft Store. För AppExecLink
länkar tillhandahåller Windows inte värden för egenskaperna LinkType eller LinkTarget .
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 ->
Navigera i FileSystem-enheterna
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.
Kommentar
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 upprepas, 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 fråga efter 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 katalogerna 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
Som standard skriver cmdleten inte över en befintlig fil som har samma namn. Om du vill tvinga cmdleten att skriva över en befintlig fil anger du force-parametern.
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 parametern Värde 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 Avgränsare för att ange en alternativ avgränsare. Om du anger det till 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, som var och en slutar med orden "End of Employee Record" och sparar den i variabeln $e
.
Det andra kommandot använder matris notation 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 Get-Content
för .
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 *
Mer information om det här objektet finns i skicka kommandot till cmdleten Get-Member eller se FileSecurity-klassen .
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 även 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 som heter 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
Cmdleten Get-Service för att hämta information om lokala tjänster och skickar informationen till cmdleten Export-Csv för att lagra informationen i Services.csv
filen.
Sedan öppnar services.csv
Invoke-Item 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 filparametern för att endast hämta filer (inte kataloger) och systemparametern 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 är komprimerade eller krypterade.
Den använder parametern Attribut med två värden och Compressed
Encrypted
. 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.
Kodningskodning <>
Anger filkodningen. 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 byteordningen.bigendianutf32
: Kodar i UTF-32-format med hjälp av storslutsbyteordningen.oem
: Använder standardkodning för MS-DOS och konsolprogram.unicode
: Kodar i UTF-16-format med hjälp av 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)utf8NoBOM
: Kodar i UTF-8-format utan Byte Order Mark (BOM)utf32
: Kodar i UTF-32-format.
Cmdletar stöds
Add-Content
Get-Content
Set-Content
Avgränsarsträng <>
Anger avgränsare som Get-Content
använder för att dela upp filen i objekt medan den läser.
Standardvärdet är \n
, radslutstecknet.
När du läser en textfil Get-Content
returneras en samling strängobjekt, som var och en slutar med avgränsarens tecken.
Om du anger en avgränsare som inte finns i filen Get-Content
returneras 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.
Kommentar
För närvarande returnerar inte något när värdet för parametern Avgränsare är en tom sträng Get-Content
. Detta är ett känt problem. Om du vill framtvinga Get-Content
att hela filen returneras som en enskild, icke avgränsad sträng anger du ett värde som inte finns i filen.
Cmdletar stöds
Get-Content
Vänta på <SwitchParameter>
Väntar på att innehållet 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 Get-Content
kontrollerar du filen en gång i sekunden tills du avbryter den, till exempel genom att trycka på CTRL+C.
Cmdletar stöds
Get-Content
Attribut FlagsExpression <>
Hämtar filer och mappar med de angivna attributen. Den här parametern stöder alla attribut och låter dig ange komplexa kombinationer av attribut.
Parametern Attribut introducerades i Windows PowerShell 3.0.
Parametern Attribut stöder följande attribut:
- Arkiv
- Komprimerad
- Enhet
- Katalog
- Krypterade
- Dold
- Normal
- NotContentIndexed
- Offline
- ReadOnly
- ReparsePoint
- SparseFile
- System
- Tillfällig
En beskrivning av dessa attribut finns i FileAttributes-uppräkning .
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
Get-ChildItem
KatalogväxelParameter <>
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 filparametern. Om du vill exkludera kataloger använder du parametern Arkiv och utelämnar parametern Katalog , eller använder parametern Attribut .
Cmdletar stöds
Get-ChildItem
FilväxelParameter <>
Hämtar filer.
Filparametern introducerades i Windows PowerShell 3.0.
Om du bara vill hämta filer använder du parametern Arkiv och utelämnar parametern Katalog . Om du vill exkludera filer använder du parametern Directory och utelämnar parametern File eller använder parametern Attribut .
Cmdletar stöds
Get-ChildItem
Dold <SwitchParameter>
Hämtar endast dolda filer och kataloger (mappar). Som standard Get-ChildItem
hämtar endast icke-dolda objekt.
Den dolda parametern introducerades i Windows PowerShell 3.0.
Om du bara vill hämta dolda objekt använder du den dolda parametern, dess h
eller ah
alias eller det dolda värdet för parametern Attribut . Om du vill undanta dolda objekt utelämnar du den dolda parametern eller använder parametern Attribut .
Cmdletar stöds
Get-ChildItem
ReadOnly <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 Attribut . Om du vill undanta skrivskyddade objekt använder du parametern Attribut .
Cmdletar stöds
Get-ChildItem
System <SwitchParameter>
Hämtar endast systemfiler och kataloger (mappar).
Systemparametern introducerades i Windows PowerShell 3.0.
Om du bara vill hämta systemfiler och mappar använder du systemparametern , dess as
alias eller systemvärdet för parametern Attribut . Om du vill undanta systemfiler och mappar använder du parametern Attribut .
Cmdletar stöds
Get-ChildItem
NewerThan <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 <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
Test-Path
Strömsträng <>
Hanterar alternativa dataströmmar. Ange streamnamnet. Jokertecken tillåts endast i Get-Item
för och Remove-Item
kommandon i en filsystemenhet.
Cmdletar stöds
Add-Content
Clear-Content
Get-Item
Get-Content
Remove-Item
Set-Content
Raw <SwitchParameter>
Ignorerar nya tecken. Returnerar innehåll som ett enskilt objekt.
Cmdletar stöds
Get-Content
ItemType-sträng <>
Med den här parametern kan du ange vilken typ av objekt som ska skapas med New-Item
.
Vilka värden som är tillgängliga för den här parametern beror på den aktuella providern som du använder.
På en FileSystem
enhet tillåts följande värden:
- Fil
- Katalog
- Symbolisk länk
- Knutpunkt
- HardLink
Cmdletar stöds
New-Item
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 Get-Help
Sökväg för för att ange en filsystemenhet.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: