about_FileSystem_Provider
Název poskytovatele
Systém souborů
Jednotky
C:
, D:
... Temp:
Možnosti
Filter, ShouldProcess
Krátký popis
Poskytuje přístup k souborům a adresářům.
Podrobný popis
Zprostředkovatel systému souborů PowerShellu umožňuje získat, přidat, změnit, vymazat a odstranit soubory a adresáře v PowerShellu.
Jednotky FileSystem jsou hierarchický obor názvů obsahující adresáře a soubory ve vašem počítači. Jednotka FileSystem může být logická nebo fyzická jednotka, adresář nebo mapovaná síťová sdílená složka.
Počínaje PowerShellem verze 7.0 se volá jednotka TEMP:
mapovaná na dočasnou cestu k adresáři uživatele. PowerShell používá metodu .NET GetTempPath() k určení umístění dočasné složky. Ve Windows je umístění stejné jako $env:TEMP
. V jiných systémech než Windows je umístění stejné jako $env:TMPDIR
proměnná prostředí nebo /tmp
pokud není definovaná proměnná prostředí.
Zprostředkovatel FileSystem podporuje následující rutiny, které jsou popsané v tomto článku.
- Získat umístění
- Nastavení umístění
- Získat položku
- Get-ChildItem
- Vyvolání položky
- Přesunout položku
- Nová položka
- Odebrat položku
- Get-ItemProperty
- Set-ItemProperty
- Vymazat položku
- Clear-ItemProperty
- Odebrat položku
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Přidat obsah
- Vymazat obsah
- Získání obsahu
- Nastavení obsahu
Typy vystavené tímto poskytovatelem
Soubory jsou instance System.IO.FileInfo třídy. Adresáře jsou instance třídy System.IO.DirectoryInfo .
Rozšířený systém typů PowerShellu přidává do těchto typů objektů další vlastnosti, které poskytují další informace. Některé informace jsou specifické pro platformu. Možné hodnoty vlastnosti LinkType jsou například závislé na platformě a použitém systému souborů. Systémy souborů s Linuxem a macOS podporují HardLink
a SymLink
. systém Windows NT FS podporuje HardLink
, SymLink
, Junction
a několik dalších hodnot pro LinkType.
Pokud používáte Get-Item
nebo Get-ChildItem
chcete získat informace o propojené položce, vlastnost Mode obsahuje l
indikaci, že položka je odkaz. Vlastnost LinkType obsahuje typ propojení.
AppExecLink
odkazy se vytvoří při instalaci aplikace z Microsoft Storu. Pro AppExecLink
odkazy Systém Windows neposkytuje hodnoty pro vlastnosti LinkType nebo 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 ->
Navigace na jednotkách FileSystem
Zprostředkovatel fileSystem zveřejňuje svá úložiště dat namapováním všech logických jednotek v počítači jako jednotek PowerShellu. Pokud chcete pracovat s jednotkou FileSystem , můžete změnit umístění na jednotku pomocí názvu jednotky následovaného dvojtečka (:
).
Set-Location C:
S poskytovatelem systému souborů můžete také pracovat z libovolné jiné jednotky PowerShellu. Pokud chcete odkazovat na soubor nebo adresář z jiného umístění, použijte v cestě název jednotky (C:
, D:
...).
Poznámka:
PowerShell používá aliasy, které vám umožní pracovat se známým způsobem práce s cestami zprostředkovatele. Příkazy jako dir
a ls
jsou nyní aliasy pro Get-ChildItem
, cd
je alias pro Set-Location
. a pwd
je alias pro Get-Location
.
Získání souborů a adresářů
Rutina Get-ChildItem
vrátí všechny soubory a adresáře v aktuálním umístění. Můžete zadat jinou cestu pro vyhledávání a použití předdefinovaných parametrů k filtrování a řízení hloubky rekurze.
Get-ChildItem
Další informace o využití rutin najdete v tématu Get-ChildItem.
Kopírování souborů a adresářů
Rutina Copy-Item
zkopíruje soubory a adresáře do zadaného umístění.
Parametry jsou k dispozici pro filtrování a rekurse, podobně jako Get-ChildItem
.
Následující příkaz zkopíruje všechny soubory a adresáře pod cestou C:\temp\
ke složce C:\Windows\Temp
.
Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File
Copy-Item
přepíše soubory v cílovém adresáři bez výzvy k potvrzení.
Tento příkaz zkopíruje a.txt
soubor z C:\a
adresáře do C:\a\bb
adresáře.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Zkopíruje všechny adresáře a soubory v C:\a
adresáři do C:\c
adresáře. Pokud některý z adresářů, které se mají zkopírovat, již v cílovém adresáři existuje, příkaz selže, pokud nezadáte parametr Force .
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
Další informace naleznete v tématu Kopírovat položku.
Přesouvání souborů a adresářů
Tento příkaz přesune c.txt
soubor v C:\a
adresáři do C:\a\aa
adresáře:
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
Ve výchozím nastavení rutina nepřepíše existující soubor se stejným názvem. Pokud chcete vynutit, aby rutina přepsala existující soubor, zadejte parametr Force .
Adresář nelze přesunout, pokud je tento adresář aktuálním umístěním. Pokud používáte Move-Item
k přesunutí adresáře v aktuálním umístění, zobrazí se tato chyba.
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
Správa obsahu souboru
Získání obsahu souboru
Tento příkaz získá obsah souboru "Test.txt" a zobrazí je v konzole.
Get-Content -Path Test.txt
Obsah souboru můžete převést na jinou rutinu. Například následující příkaz přečte obsah Test.txt
souboru a pak je zadá jako vstup do rutiny ConvertTo-Html :
Get-Content -Path Test.txt | ConvertTo-Html
Obsah souboru můžete načíst také tak, že předponou cesty poskytovatele použijete znak dolaru ($
). Cesta musí být uzavřena ve složených závorkách kvůli omezením pojmenování proměnných. Další informace najdete v tématu about_Variables.
${C:\Windows\System32\Drivers\etc\hosts}
Přidání obsahu do souboru
Tento příkaz k souboru připojí řetězec Test.txt
"test content":
Add-Content -Path test.txt -Value "test content"
Existující obsah v Test.txt
souboru se neodstraní.
Nahrazení obsahu souboru
Tento příkaz nahradí obsah Test.txt
souboru řetězcem "test content":
Set-Content -Path test.txt -Value "test content"
Přepíše obsah souboru Test.txt
. Parametr Value rutiny New-Item
můžete použít k přidání obsahu do souboru při jeho vytvoření.
Procházení obsahu souboru
Rutina Get-Content
ve výchozím nastavení používá jako oddělovač znak konce řádku, takže získá soubor jako kolekci řetězců s každým řádkem jako jedním řetězcem v souboru.
K určení alternativního oddělovače můžete použít parametr Oddělovač . Pokud ho nastavíte na znaky, které označují konec oddílu nebo začátek dalšího oddílu, můžete soubor rozdělit na logické části.
První příkaz získá Employees.txt
soubor a rozdělí ho do oddílů, přičemž každý z nich končí slovy "Záznam koncového zaměstnance" a uloží ho $e
do proměnné.
Druhý příkaz používá maticový zápis k získání první položky v kolekci v $e
. Používá index 0, protože pole PowerShellu jsou založená na nule.
Další informace o Get-Content
rutině naleznete v tématu nápovědy Get-Content
.
Další informace o polích najdete v tématu about_Arrays.
$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
Správa popisovačů zabezpečení
Zobrazení seznamu ACL pro soubor
Tento příkaz vrátí objekt System.Security.AccessControl.FileSecurity :
Get-Acl -Path test.txt | Format-List -Property *
Další informace o tomto objektu získáte tak, že příkaz předáte rutině Get-Member nebo se zobrazí třída FileSecurity .
Vytváření souborů a adresářů
Vytvoření adresáře
Tento příkaz vytvoří adresář logfiles
na C
jednotce:
New-Item -Path c:\ -Name logfiles -Type directory
PowerShell obsahuje mkdir
také funkci (alias md
), která pomocí rutiny New-Item
vytvoří nový adresář.
Vytvoření souboru
Tento příkaz vytvoří log2.txt
soubor v C:\logfiles
adresáři a pak do souboru přidá řetězec testovacího protokolu:
New-Item -Path c:\logfiles -Name log2.txt -Type file
Vytvoření souboru s obsahem
Vytvoří soubor volaný log2.txt
v C:\logfiles
adresáři a přidá do souboru řetězec "testovací protokol".
New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"
Přejmenování souborů a adresářů
Přejmenování souboru
Tento příkaz přejmenuje a.txt
soubor v C:\a
adresáři na b.txt
:
Rename-Item -Path c:\a\a.txt -NewName b.txt
Přejmenování adresáře
Tento příkaz přejmenuje C:\a\cc
adresář na C:\a\dd
:
Rename-Item -Path c:\a\cc -NewName dd
Odstraňování souborů a adresářů
Odstranění souboru
Tento příkaz odstraní Test.txt
soubor v aktuálním adresáři:
Remove-Item -Path test.txt
Odstranění souborů pomocí zástupných znaků
Tento příkaz odstraní všechny soubory v aktuálním adresáři, které mají příponu .xml
názvu souboru:
Remove-Item -Path *.xml
Spuštění programu vyvoláním přidruženého souboru
Vyvolání souboru
Rutina Get-Service pro získání informací o místních službách a předá informace do rutiny Export-Csv pro uložení informací v Services.csv
souboru.
Potom Invoke-Item otevře services.csv
soubor v programu přidruženém k příponě .csv
:
Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv
Získání souborů a složek se zadanými atributy
Získání systémových souborů
Tento příkaz získá systémové soubory v aktuálním adresáři a jeho podadresářích.
Pomocí parametru File získá pouze soubory (nikoli adresáře) a systémový parametr získá pouze položky s atributem "system".
Pomocí parametru Recurse získá položky v aktuálním adresáři a všech podadresářích.
Get-ChildItem -File -System -Recurse
Získání skrytých souborů
Tento příkaz získá všechny soubory včetně skrytých souborů v aktuálním adresáři.
Používá parametr Attributes se dvěma hodnotami, !Directory+Hidden
což získá skryté soubory a !Directory
, který získá všechny ostatní soubory.
Get-ChildItem -Attributes !Directory,!Directory+Hidden
dir -att !d,!d+h
je ekvivalentem tohoto příkazu.
Získání komprimovaných a šifrovaných souborů
Tento příkaz získá soubory v aktuálním adresáři, které jsou buď komprimované, nebo zašifrované.
Používá parametr Attributes se dvěma hodnotami Compressed
a Encrypted
. Hodnoty jsou oddělené čárkou ,
, která představuje operátor OR.
Get-ChildItem -Attributes Compressed,Encrypted
Dynamické parametry
Dynamické parametry jsou parametry rutiny přidané zprostředkovatelem PowerShellu a jsou k dispozici pouze v případech, kdy se rutina používá na jednotce s podporou poskytovatele.
Kódování kódování <>
Určuje kódování souboru. Výchozí hodnota je ASCII.
ascii
: Používá kódování znakové sady ASCII (7bitová).bigendianunicode
: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.bigendianutf32
: Kóduje ve formátu UTF-32 pomocí pořadí velkých bajtů.oem
: Používá výchozí kódování pro MS-DOS a konzolové programy.unicode
: Kóduje ve formátu UTF-16 pomocí malého bajtového pořadí.utf7
: Kóduje ve formátu UTF-7.utf8
: Kóduje ve formátu UTF-8.utf8BOM
: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)utf8NoBOM
: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)utf32
: Kóduje ve formátu UTF-32.
Podporované rutiny
Add-Content
Get-Content
Set-Content
Řetězec oddělovače <>
Určuje oddělovač, který Get-Content
používá k rozdělení souboru na objekty při čtení.
Výchozí hodnota je \n
znak konce řádku.
Při čtení textového souboru Get-Content
vrátí kolekci řetězcových objektů, z nichž každá končí znakem oddělovače.
Zadáním oddělovače, který v souboru neexistuje, Get-Content
vrátí celý soubor jako jeden objekt bez oddělovače.
Tento parametr můžete použít k rozdělení velkého souboru na menší soubory zadáním oddělovače souborů, například "Konec příkladu", jako oddělovač. Oddělovač se zachová (nezahodí) a stane se poslední položkou v každé části souboru.
Poznámka:
V současné době platí, že pokud je hodnota parametru Oddělovač prázdný řetězec, Get-Content
nic nevrací. Jedná se o známý problém. Pokud chcete vynutit Get-Content
vrácení celého souboru jako jednoho řetězce bez omezení, zadejte hodnotu, která v souboru neexistuje.
Podporované rutiny
Get-Content
Wait <SwitchParameter>
Čeká na připojení obsahu k souboru. Pokud je obsah připojený, vrátí připojený obsah. Pokud se obsah změnil, vrátí celý soubor.
Při čekání zkontroluje soubor jednou za sekundu, Get-Content
dokud ho nepřerušíte, například stisknutím kombinace kláves CTRL+C.
Podporované rutiny
Get-Content
<Atributy FlagsExpression>
Získá soubory a složky se zadanými atributy. Tento parametr podporuje všechny atributy a umožňuje zadat složité kombinace atributů.
Parametr Attributes byl zaveden ve Windows PowerShellu 3.0.
Parametr Attributes podporuje následující atributy:
- Archiv
- Komprimovaný
- Zařízení
- Adresář
- Zakódovaný
- Schovaný
- Normální
- NotContentIndexed
- Offline
- ReadOnly
- ReparsePoint
- Řídký soubor
- Systém
- Dočasné
Popis těchto atributů najdete ve výčtu FileAttributes .
Ke kombinování atributů použijte následující operátory.
!
-NE+
-A,
-NEBO
Mezi operátorem a jeho atributem nejsou povoleny žádné mezery. Mezery jsou však povoleny před čárkami.
Podporované rutiny
Get-ChildItem
SwitchParameter adresáře <>
Získá adresáře (složky).
Parametr Adresář byl představen ve Windows PowerShellu 3.0.
Chcete-li získat pouze adresáře, použijte parametr Directory a vynecháte parametr File . Pokud chcete vyloučit adresáře, použijte parametr File a vyloučíte parametr Directory nebo použijte parametr Attributes .
Podporované rutiny
Get-ChildItem
File <SwitchParameter>
Získá soubory.
Parametr File byl představen ve Windows PowerShellu 3.0.
Pokud chcete získat pouze soubory, použijte parametr File a vynecháte parametr Directory . Pokud chcete vyloučit soubory, použijte parametr Directory a vyloučíte parametr File nebo použijte parametr Attributes .
Podporované rutiny
Get-ChildItem
Skrytý <přepínačParameter>
Získá pouze skryté soubory a adresáře (složky). Ve výchozím nastavení Get-ChildItem
se načte pouze neskrytá pošta.
Skrytý parametr byl představen ve Windows PowerShellu 3.0.
Chcete-li získat pouze skryté položky, použijte skrytý parametr, jeho h
nebo ah
aliasy nebo hodnotu Hidden parametru Attributes. Chcete-li vyloučit skryté položky, vynecháte skrytý parametr nebo použijte parametr Attributes .
Podporované rutiny
Get-ChildItem
ReadOnly <SwitchParameter>
Získá pouze soubory a adresáře jen pro čtení (složky).
Parametr ReadOnly byl zaveden ve Windows PowerShellu 3.0.
Pokud chcete získat pouze položky jen pro čtení, použijte parametr ReadOnly , jeho ar
alias nebo hodnotu ReadOnly parametru Attributes . Chcete-li vyloučit položky jen pro čtení, použijte parametr Atributy .
Podporované rutiny
Get-ChildItem
Systémový <přepínačParameter>
Získá pouze systémové soubory a adresáře (složky).
Systémový parametr byl zaveden ve Windows PowerShellu 3.0.
Chcete-li získat pouze systémové soubory a složky, použijte parametr System , jeho as
alias nebo hodnotu System parametru Attributes . Chcete-li vyloučit systémové soubory a složky, použijte parametr Atributy .
Podporované rutiny
Get-ChildItem
<Novější Datum a čas>
Vrátí $True
, LastWriteTime
když je hodnota souboru větší než zadané datum. V opačném případě se vrátí $False
.
Zadejte objekt DateTime, například objekt, který vrací rutina Get-Date, nebo řetězec, který lze převést na objekt DateTime, například "August 10, 2011 2:00 PM"
.
Podporované rutiny
StaršíThan <DateTime>
Vrátí $True
, LastWriteTime
když je hodnota souboru menší než zadané datum. V opačném případě se vrátí $False
.
Zadejte objekt DateTime, například objekt, který rutina Get-Date
vrací, nebo řetězec, který lze převést na objekt DateTime, například "August 10, 2011 2:00 PM"
.
Podporované rutiny
Test-Path
Řetězec streamu <>
Spravuje alternativní datové proudy. Zadejte název datového proudu. Zástupné cardy jsou povoleny pouze Get-Item
pro a Remove-Item
příkazy v jednotce systému souborů.
Podporované rutiny
Add-Content
Clear-Content
Get-Item
Get-Content
Remove-Item
Set-Content
Raw <SwitchParameter>
Ignoruje znaky nového řádku. Vrátí obsah jako jednu položku.
Podporované rutiny
Get-Content
Řetězec ItemType <>
Tento parametr umožňuje zadat typ položky, pomocí které se má vytvořit New-Item
.
Dostupné hodnoty tohoto parametru závisí na aktuálním poskytovateli, který používáte.
FileSystem
Na jednotce jsou povoleny následující hodnoty:
- Soubor
- Adresář
- Symbolický odkaz
- Křižovatka
- Pevný odkaz
Podporované rutiny
New-Item
Použití kanálu
Rutiny zprostředkovatele přijímají vstup kanálu. Kanál můžete použít ke zjednodušení úlohy odesláním dat zprostředkovatele z jedné rutiny do jiné rutiny zprostředkovatele. Další informace o tom, jak používat kanál s rutinami zprostředkovatele, najdete v odkazech na rutiny uvedené v tomto článku.
Získání nápovědy
Od windows PowerShellu 3.0 můžete získat přizpůsobená témata nápovědy pro rutiny zprostředkovatele, která vysvětlují, jak se tyto rutiny chovají na jednotce systému souborů.
Pokud chcete získat témata nápovědy, která jsou přizpůsobená pro jednotku systému souborů, spusťte příkaz Get-Help na jednotce systému souborů nebo pomocí parametru Get-Help
Cesta určete jednotku systému souborů.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: