Sdílet prostřednictvím


about_FileSystem_Provider

Název poskytovatele

Systém souborů

Drives

C:, D:... Temp:

Capabilities

filtr, ShouldProcess

Krátký popis

Poskytuje přístup k souborům a adresářům.

Podrobný popis

Zprostředkovatel FileSystem PowerShellu umožňuje získat, přidat, změnit, vymazat a odstranit soubory a adresáře v PowerShellu.

Jednotky FileSystem tvoří hierarchický systém názvů, který obsahuje adresáře a soubory na vašem počítači. Jednotka FileSystem může být logická nebo fyzická jednotka, adresář nebo mapovaná síťová složka.

Počínaje verzí 7.0 PowerShellu je jednotka s názvem Temp: mapována na dočasný adresář 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 nebo /tmp, pokud není definovaná proměnná prostředí.

Poskytovatel FileSystem podporuje následující rutiny, které jsou popsané v tomto článku.

Typy vystavené tímto poskytovatelem

Soubory jsou instancemi třídy System.IO.FileInfo. 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. Například možné hodnoty vlastnosti LinkType závisí na používané platformě a systému souborů. Systémy souborů s Linuxem a macOS podporují HardLink a SymLink. Systém Windows NTFS podporuje HardLink, SymLink, Junctiona několik dalších hodnot pro LinkType.

Pokud používáte Get-Item nebo Get-ChildItem k informacím o propojené položce, vlastnost Mode obsahuje l označující, že položka je odkaz. Vlastnost LinkType obsahuje typ odkazu.

AppExecLink odkazy se vytvoří při instalaci aplikace z Microsoft Storu. U odkazů AppExecLink systém Windows neposkytuje hodnoty pro vlastnosti jako jsou 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 ->

Poskytovatel FileSystem zpřístupňuje svá úložiště dat namapováním všech logických jednotek na počítači jako jednotky PowerShellu. Chcete-li pracovat na jednotce FileSystem, můžete změnit umístění na jednotku pomocí názvu jednotky následovaného dvojtečkou (:).

Set-Location C:

Můžete také pracovat s poskytovatelem FileSystem z libovolné jiné jednotky PowerShellu. Chcete-li 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 známým způsobem s cestami zprostředkovatele. Příkazy jako dir a ls jsou teď 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 používání cmdletu 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\ do složky 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 soubor a.txt z adresáře C:\a do adresáře C:\a\bb.

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

Zkopíruje všechny adresáře a soubory v adresáři C:\a do C:\c adresáře. Pokud některý z adresářů, které chcete 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 najdete v Copy-Item.

Přesouvání souborů a adresářů

Tento příkaz přesune soubor c.txt v adresáři C:\a do adresáře C:\a\aa:

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. Když použijete 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 souboruTest.txta zobrazí je v konzole.

Get-Content -Path Test.txt

Obsah souboru můžete přesměrovat do jiného cmdletu. Například následující příkaz přečte obsah souboru Test.txt a pak je zadá jako vstup do rutiny ConvertTo-Html:

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

Obsah souboru můžete také načíst tím, že k předponě cesty poskytovatele přidáte znak dolaru ($). Cesta musí být uzavřena ve složených závorkách z důvodu omezení pojmenování proměnných. Další informace naleznete v tématu about_Variables.

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

Přidání obsahu do souboru

Tento příkaz připojí řetězec "test content" k souboru Test.txt:

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

Existující obsah v souboru Test.txt se neodstraní.

Nahrazení obsahu souboru

Tento příkaz nahradí obsah souboru Test.txt řetězcem "test content":

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

Přepíše obsah Test.txt. Při vytváření můžete k přidání obsahu do souboru použít parametr Value rutiny New-Item.

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ů, přičemž každý řádek je v souboru jako jeden řetězec.

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á soubor Employees.txt, rozdělí jej na oddíly, z nichž každý končí slovy "Konec záznamu zaměstnance," a uloží jej do proměnné $e.

Druhý příkaz pomocí notace pole získá první položku v kolekci v $e. Používá index 0, protože pole PowerShellu jsou založená na nule.

Další informace o rutině Get-Content naleznete v tématu nápovědy pro Get-Content.

Další informace o polích naleznete 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 do rutiny Get-Member nebo se podívejte na třídu FileSecurity.

Vytváření souborů a adresářů

Vytvoření adresáře

Tento příkaz vytvoří adresář logfiles na jednotce C:

New-Item -Path C:\ -Name logfiles -Type Directory

PowerShell obsahuje také funkci mkdir (alias md), která k vytvoření nového adresáře používá rutinu New-Item.

Vytvoření souboru

Tento příkaz vytvoří soubor log2.txt v adresáři C:\logfiles a pak do souboru přidá řetězec "testovací protokol":

New-Item -Path C:\logfiles -Name log2.txt -Type File

Vytvoření souboru s obsahem

Vytvoří soubor s názvem log2.txt v adresáři C:\logfiles 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 soubor a.txt v adresáři C:\a na b.txt:

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

Přejmenování adresáře

Tento příkaz přejmenuje adresář C:\a\cc 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í soubor Test.txt 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 názvu souboru .xml:

Remove-Item -Path *.xml

Spuštění programu vyvoláním přidruženého souboru

Vyvolání souboru

Cmdlet Get-Service získá informace o místních službách a předá je cmdletu Export-Csv, aby uložil informace do souboru Services.csv.

Pak Invoke-Item otevře services.csv soubor v programu asociovaného s příponou .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 parametr System k získání pouze položek s atributem "system".

K získání položek v aktuálním adresáři a všech podadresářích používá parametr Recurse.

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á Atributy parametr se dvěma hodnotami, !Directory+Hidden, který 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í big-endianového pořadí bajtů.
  • bigendianutf32: Kóduje ve formátu UTF-32 s použitím big-endian bajtového pořadí.
  • oem: Používá výchozí kódování pro MS-DOS a konzolové programy.
  • unicode: Kóduje ve formátu UTF-16 pomocí pořadí malých bajtů.
  • 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é cmdlety

  • Add-Content
  • Get-Content
  • Set-Content

Oddělovač <řetězec>

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

Pokud je hodnota parametru Delimiter prázdným řetězcem, Get-Content nic nevrací. Jedná se o známý problém. Pokud chcete vynutit, aby Get-Content vrátil celý soubor jako jediný, nedemitovaný řetězec, zadejte hodnotu, která v souboru neexistuje.

Podporované cmdlety

  • Get-Content

Počkejte <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í program Get-Content kontroluje soubor každou sekundu, dokud ho nepřerušíte, například stisknutím kombinace kláves CTRL+C.

Podporované cmdlety

  • 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 Atributy byl zaveden v prostředí Windows PowerShell 3.0.

Parametr Attributes podporuje následující atributy:

  • archivu
  • komprimované
  • zařízení
  • Adresář
  • šifrované
  • Skryto
  • Normální
  • Nezaindexováno obsahem
  • offline
  • jen pro čtení
  • ReparsePoint
  • ŘídkýSoubor
  • Systém
  • dočasné

Popis těchto atributů najdete v FileAttributes výčtu.

Ke kombinování atributů použijte následující operátory.

  • ! - NE
  • + -A
  • , – OR

Mezi operátorem a jeho atributem nejsou povoleny žádné mezery. Mezery jsou však povoleny před čárkami.

Podporované cmdlety

  • Get-ChildItem

<adresář> switchParameter

Získává adresáře (složky).

Parametr adresáře byl zaveden ve Windows PowerShellu 3.0.

Pokud chcete získat pouze adresáře, použijte parametr Directory a vynechte parametr File. Pokud chcete vyloučit adresáře, použijte parametr soubor a vyloučte parametr adresář nebo použijte parametr Atributy.

Podporované cmdlety

  • Get-ChildItem

Soubor <SwitchParameter>

Získá soubory.

Parametr File byl zaveden ve Windows PowerShellu 3.0.

Pokud chcete získat pouze soubory, použijte parametr File a vynechte parametr Directory. Pokud chcete vyloučit soubory, použijte parametr adresáře a vyloučte parametr File nebo použijte parametr Atributy.

Podporované cmdlety

  • Get-ChildItem

Skrytý <SwitchParameter>

Získá pouze skryté soubory a adresáře (složky). Ve výchozím nastavení Get-ChildItem získá pouze položky, které nejsou skryté.

Parametr Hidden byl zaveden ve Windows PowerShellu 3.0.

Pokud chcete získat jenom skryté položky, použijte parametr Hidden, jeho h nebo aliasy ah nebo hodnotu Hidden parametru Attributes. Chcete-li vyloučit skryté položky, vynecháte parametr Hidden nebo použijte parametr Atributy.

Podporované cmdlety

  • 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 alias ar nebo hodnotu ReadOnly parametru Atributy. Chcete-li vyloučit položky jen pro čtení, použijte parametr Atributy.

Podporované cmdlety

  • Get-ChildItem

Systémový <přepínačParameter>

Získá pouze systémové soubory a adresáře (složky).

Parametr systému byl zaveden ve Windows PowerShellu 3.0.

Pokud chcete získat pouze systémové soubory a složky, použijte parametr System, jeho alias as nebo hodnotu System parametru Attributes. Chcete-li vyloučit systémové soubory a složky, použijte parametr Atributy.

Podporované cmdlety

  • Get-ChildItem

NovějšíNež <Datum a čas>

Vrátí $true, pokud je hodnota LastWriteTime souboru větší než zadané datum. V opačném případě 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é cmdlety

  • testovací cesty

Starší <Datum a čas>

Vrátí $true, pokud je LastWriteTime hodnota souboru menší než zadané datum. V opačném případě vrátí $false.

Zadejte objekt DateTime, například objekt, který Get-Date rutina vrátí, nebo řetězec, který lze převést na objekt DateTime, například "August 10, 2011 2:00 PM".

Podporované cmdlety

  • Test-Path

Stream <řetězce>

Spravuje alternativní datové proudy. Zadejte název datového proudu. Zástupné znaky jsou povoleny pouze u příkazů Get-Item a Remove-Item na jednotce souborového systému.

Podporované cmdlety

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

Surový <SwitchParameter>

Ignoruje znaky nového řádku. Vrátí obsah jako jednu položku.

Podporované cmdlety

  • Get-Content

ItemType <řetězec>

Tento parametr umožňuje určit typ položky, kterou chcete vytvořit pomocí New-Item.

Dostupné hodnoty tohoto parametru závisí na aktuálním poskytovateli, který používáte.

Na jednotce FileSystem jsou povoleny následující hodnoty:

  • Soubor
  • Adresář
  • Symbolický odkaz
  • Křižovatka
  • Pevný odkaz

Podporované cmdlety

  • New-Item

Použití kanálu

Příkazy poskytovatele přijímají vstup z potrubí. 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 cmdlety poskytovatele, najdete v referencích na cmdlety obsažených v tomto článku.

Získání nápovědy

Počínaje Windows PowerShellem 3.0 můžete získat přizpůsobená témata nápovědy pro příkazy poskytovatele, která vysvětlují, jak se tyto příkazy 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 CestaGet-Help určit jednotku systému souborů.

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

Viz také