Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Elementy widoczne na dyskach programu PowerShell, takich jak pliki i foldery lub klucze rejestru, są nazywane elementami w programie PowerShell. Polecenia cmdlet do pracy z tymi elementami mają rzeczownik Item w nazwach.
Dane wyjściowe polecenia Get-Command -Noun Item pokazują, że istnieje dziewięć poleceń cmdlet programu PowerShell.
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[]> ...
Tworzenie nowych elementów
Aby utworzyć nowy element w systemie plików, użyj New-Item polecenia cmdlet . Dołącz parametr Path ze ścieżką do elementu, a parametr ItemType z wartością File lub Directory.
Aby na przykład utworzyć nowy katalog o nazwie New.Directory w C:\Temp katalogu, wpisz:
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
Aby utworzyć plik, zmień wartość parametru ItemType na File. Aby na przykład utworzyć plik o nazwie file1.txt w New.Directory katalogu, wpisz:
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
Możesz użyć tej samej techniki, aby utworzyć nowy klucz rejestru. W rzeczywistości klucz rejestru jest łatwiejszy do utworzenia, ponieważ jedynym typem elementu w rejestrze systemu Windows jest klucz. (Wpisy rejestru są właściwościami elementów). Aby na przykład utworzyć klucz o nazwie _Test w podkluczu CurrentVersion , wpisz:
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 {}
Podczas wpisywania ścieżki rejestru upewnij się, że dwukropek (:) jest uwzględniony w nazwach dysków PowerShell, takich jak HKLM: i HKCU:. Bez dwukropka program PowerShell nie rozpoznaje nazwy dysku w ścieżce.
Dlaczego wartości rejestru nie są elementami
Gdy używasz Get-ChildItem polecenia cmdlet do znajdowania elementów w kluczu rejestru, nigdy nie zobaczysz rzeczywistych wpisów rejestru ani ich wartości.
Na przykład klucz HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run rejestru zwykle zawiera kilka wpisów rejestru reprezentujących aplikacje uruchamiane po uruchomieniu systemu.
Jednak gdy użyjesz Get-ChildItem, aby wyszukać elementy podrzędne w kluczu, zobaczysz tylko podklucz OptionalComponents tego klucza.
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 {}
Chociaż wygodne byłoby traktowanie wpisów rejestru jako elementów, nie można określić ścieżki do wpisu rejestru w sposób zapewniający, że jest on unikatowy. Notacja ścieżki nie rozróżnia podklucza rejestru nazwanego Run i wpisu rejestru (Default) w podkluczu Run.
Ponadto, ponieważ nazwy wpisów rejestru mogą zawierać znak ukośnika odwrotnego (\), jeśli wpisy rejestru były elementami, nie można użyć notacji ścieżki, aby odróżnić wpis rejestru o nazwie Windows\CurrentVersion\Run od podklucza znajdującego się w tej ścieżce.
Zmienianie nazw istniejących elementów
Aby zmienić nazwę pliku lub folderu, użyj Rename-Item polecenia cmdlet . Następujące polecenie zmienia nazwę file1.txt pliku na fileOne.txt.
Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt
Polecenie Rename-Item cmdlet może zmienić nazwę pliku lub folderu, ale nie może przenieść elementu. Następujące polecenie kończy się niepowodzeniem, ponieważ próbuje przenieść plik z New.Directory katalogu do katalogu tymczasowego.
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
Przenoszenie elementów
Aby przenieść plik lub folder, użyj Move-Item polecenia cmdlet .
Na przykład następujące polecenie przenosi katalog New.Directory z C:\temp katalogu do katalogu głównego C: dysku. Aby sprawdzić, czy element został przeniesiony, dołącz parametr Move-ItemPassThru polecenia cmdlet. Bez PassThru cmdlet Move-Item nie wyświetla żadnych wyników.
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
Kopiowanie elementów
Jeśli znasz operacje kopiowania w innych powłokach, zachowanie polecenia Copy-Itemcmdlet w PowerShell może być nietypowe. Podczas kopiowania elementu z jednej lokalizacji do innej domyślnie Copy-Item jego zawartość nie jest kopiowana.
Jeśli na przykład skopiujesz New.Directory katalog z dysku C: do C:\temp katalogu, polecenie zakończy się pomyślnie, ale pliki w katalogu New.Directory nie są kopiowane.
Copy-Item -Path C:\New.Directory -Destination C:\temp
Jeśli zostanie wyświetlona zawartość C:\temp\New.Directoryelementu , okaże się, że nie zawiera ona żadnych plików:
PS> Get-ChildItem -Path C:\temp\New.Directory
PS>
Dlaczego polecenie cmdlet Copy-Item nie kopiuje zawartości do nowej lokalizacji?
Polecenie Copy-Item cmdlet zostało zaprojektowane jako uniwersalne, nie tylko do kopiowania plików i folderów.
Ponadto nawet podczas kopiowania plików i folderów warto skopiować tylko kontener, a nie elementy w nim.
Aby skopiować całą zawartość folderu, dołącz parametr Recurse polecenia Copy-Item w poleceniu. Jeśli katalog został już skopiowany bez jego zawartości, dodaj parametr Force , który umożliwia zastąpienie pustego folderu.
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
Usuwanie elementów
Aby usunąć pliki i foldery, użyj Remove-Item polecenia cmdlet . Polecenia cmdlet programu PowerShell, takie jak Remove-Item, które mogą wprowadzać znaczące, nieodwracalne zmiany często monitują o potwierdzenie podczas wprowadzania jego poleceń. Jeśli na przykład spróbujesz usunąć New.Directory folder, zostanie wyświetlony monit o potwierdzenie polecenia, ponieważ folder zawiera pliki:
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"):
Ponieważ Yes jest to domyślna odpowiedź, aby usunąć folder i jego pliki, naciśnij Enter . Aby usunąć folder bez potwierdzenia, użyj parametru Recurse .
Remove-Item C:\temp\New.Directory -Recurse
Wykonywanie elementów
Program PowerShell używa Invoke-Item polecenia cmdlet do wykonywania domyślnej akcji dla pliku lub folderu. Ta domyślna akcja jest określana przez domyślną procedurę obsługi aplikacji w rejestrze; efekt jest taki sam, jak w przypadku dwukrotnego kliknięcia elementu w Eksploratorze plików.
Załóżmy na przykład, że uruchamiasz następujące polecenie:
Invoke-Item C:\WINDOWS
Okno Eksploratora, które znajduje się w C:\Windows, pojawi się, zupełnie jakbyś dwukrotnie kliknął(a) folder C:\Windows.
Jeśli wywołasz plik Boot.ini na systemie starszym niż Windows Vista:
Invoke-Item C:\boot.ini
.ini Jeśli typ pliku jest skojarzony z Notatnikiem, plik zostanie otwarty w Notatnikuboot.ini.