Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prvky, které vidíte na jednotkách PowerShellu, jako jsou soubory a složky nebo klíče registru, se nazývají Položky v PowerShellu. Rutiny pro práci s nimi mají ve svých názvech podstatnou položku.
Výstup Get-Command -Noun Item příkazu ukazuje, že existují devět rutin powershellových položek.
Get-Command -Noun Item
CommandType Name Definition
----------- ---- ----------
Cmdlet Clear-Item Clear-Item [-Path] <String[]...
Cmdlet Copy-Item Copy-Item [-Path] <String[]>...
Cmdlet Get-Item Get-Item [-Path] <String[]> ...
Cmdlet Invoke-Item Invoke-Item [-Path] <String[...
Cmdlet Move-Item Move-Item [-Path] <String[]>...
Cmdlet New-Item New-Item [-Path] <String[]> ...
Cmdlet Remove-Item Remove-Item [-Path] <String[...
Cmdlet Rename-Item Rename-Item [-Path] <String>...
Cmdlet Set-Item Set-Item [-Path] <String[]> ...
Vytváření nových položek
K vytvoření nové položky v systému souborů použijte rutinu New-Item . Zahrňte parametr Path s cestou k položce a parametr ItemType s hodnotou File nebo Directory.
Pokud chcete například vytvořit nový adresář pojmenovaný New.Directory v C:\Temp adresáři, zadejte:
New-Item -Path C:\temp\New.Directory -ItemType Directory
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 11:29 AM New.Directory
Chcete-li vytvořit soubor, změňte hodnotu ItemType parametru na File. Pokud chcete například vytvořit soubor pojmenovaný file1.txt v New.Directory adresáři, zadejte:
New-Item -Path C:\temp\New.Directory\file1.txt -ItemType File
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-18 11:44 AM 0 file1
Stejný postup můžete použít k vytvoření nového klíče registru. Ve skutečnosti je vytvoření klíče registru jednodušší, protože jediným typem položky v registru Systému Windows je klíč. (Položky registru jsou vlastnosti položky.) Pokud chcete například vytvořit klíč pojmenovaný _Test v podklíči CurrentVersion , zadejte:
New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test
Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
SKC VC Name Property
--- -- ---- --------
0 0 _Test {}
Při zadávání cesty registru nezapomeňte do názvů HKLM: jednotek PowerShellu zahrnout dvojtečku (:) a HKCU:. Bez dvojtečky PowerShell nerozpozná název jednotky v cestě.
Proč hodnoty registru nejsou položky
Když použijete rutinu Get-ChildItem k vyhledání položek v klíči registru, nikdy neuvidíte skutečné položky registru ani jejich hodnoty.
Například klíč HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run registru obvykle obsahuje několik položek registru, které představují aplikace spuštěné při spuštění systému.
Když ale použijete Get-ChildItem k vyhledání podřízených položek v klíči, zobrazí se pouze podklíč daného klíče:
Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
SKC VC Name Property
--- -- ---- --------
3 0 OptionalComponents {}
I když by bylo vhodné zacházet s položkami registru jako s položkami, nemůžete zadat cestu k položce registru způsobem, který zajistí, že je jedinečný. Zápis cesty nerozlišuje mezi podklíčem registru s názvem Spustit a položkou registru (Výchozí) v podklíči Spustit .
Vzhledem k tomu, že názvy položek registru mohou obsahovat znak zpětného lomítka (\), pokud položky registru byly položky, pak nelze použít zápis cesty k odlišení položky registru pojmenované Windows\CurrentVersion\Run z podklíče, který se nachází v této cestě.
Přejmenování existujících položek
Pokud chcete změnit název souboru nebo složky, použijte rutinu Rename-Item . Následující příkaz změní název file1.txt souboru na fileOne.txt.
Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt
Rutina Rename-Item může změnit název souboru nebo složky, ale nemůže přesunout položku. Následující příkaz selže, protože se pokusí přesunout soubor z New.Directory adresáře do dočasného adresáře.
Rename-Item -Path C:\temp\New.Directory\fileOne.txt C:\temp\fileOne.txt
Rename-Item : can't rename because the target specified isn't a path.
At line:1 char:12
+ Rename-Item <<<< -Path C:\temp\New.Directory\fileOne C:\temp\fileOne.txt
Přesouvání položek
K přesunutí souboru nebo složky použijte rutinu Move-Item .
Například následující příkaz přesune adresář New.Directory z adresáře C:\temp do kořenu jednotky C:. Pokud chcete ověřit, že položka byla přesunuta, zahrňte parametr PassThru rutiny Move-Item . Bez PassThruMove-Item rutina nezobrazuje žádné výsledky.
Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru
Directory: Microsoft.PowerShell.Core\FileSystem::C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 12:14 PM New.Directory
Kopírování položek
Pokud znáte operace kopírování v jiných prostředích, může být chování Copy-Item rutiny v PowerShellu neobvyklé. Když položku zkopírujete z jednoho umístění do jiného, Copy-Item ve výchozím nastavení nekopíruje její obsah.
Pokud například zkopírujete New.Directory adresář z jednotky C: do C:\temp adresáře, příkaz bude úspěšný, ale soubory v adresáři New.Directory se nekopírují.
Copy-Item -Path C:\New.Directory -Destination C:\temp
Pokud zobrazíte obsah C:\temp\New.Directory, zjistíte, že neobsahuje žádné soubory:
PS> Get-ChildItem -Path C:\temp\New.Directory
PS>
Proč rutina Copy-Item nekopíruje obsah do nového umístění?
Rutina Copy-Item byla navržená tak, aby byla obecná. Nejedná se jenom o kopírování souborů a složek.
I když kopírujete soubory a složky, můžete také chtít zkopírovat pouze kontejner, nikoli položky v něm.
Pokud chcete zkopírovat veškerý obsah složky, zahrňte do příkazu parametr Recurse rutiny Copy-Item. Pokud jste již zkopírovali adresář bez jeho obsahu, přidejte parametr Force , který umožňuje přepsat prázdnou složku.
Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -PassThru
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2006-05-18 1:53 PM New.Directory
Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-18 11:44 AM 0 file1
Odstraňování položek
K odstranění souborů a složek použijte rutinu Remove-Item . Rutiny PowerShellu, například Remove-Item, které mohou provádět významné nevratné změny, často vyzvou k potvrzení při zadání příkazů. Pokud se například pokusíte složku odebrat New.Directory , zobrazí se výzva k potvrzení příkazu, protože složka obsahuje soubory:
Remove-Item C:\temp\New.Directory
Confirm
The item at C:\temp\New.Directory has children and the -Recurse parameter was not
specified. If you continue, all children will be removed with the item. Are you
sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
Protože Yes je výchozí odpověď, pokud chcete složku a její soubory odstranit, stiskněte klávesu Enter . Pokud chcete odebrat složku bez potvrzení, použijte parametr Recurse .
Remove-Item C:\temp\New.Directory -Recurse
Provádění položek
PowerShell používá rutinu Invoke-Item k provedení výchozí akce pro soubor nebo složku. Tato výchozí akce je určena výchozí obslužnou rutinou aplikace v registru; efekt je stejný jako když dvakrát kliknete na položku v Průzkumníku souborů.
Předpokládejme například, že spustíte následující příkaz:
Invoke-Item C:\WINDOWS
Okno Průzkumníka umístěné v C:\Windows se zobrazí, stejně jako kdybyste poklikali na složku C:\Windows.
Pokud vyvoláte Boot.ini soubor v systému před windows Vista:
Invoke-Item C:\boot.ini
.ini Pokud je typ souboru přidružený k Poznámkovému bloku, boot.ini soubor se otevře v Poznámkovém bloku.