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.
Ten przykład dotyczy tylko platform systemu Windows.
Program PowerShell używa rzeczownika Item do odwoływania się do elementów znalezionych na dysku programu PowerShell. W przypadku pracy z dostawcą systemu plików programu PowerShell element może być plikiem, folderem lub dyskiem programu PowerShell. Praca z tymi elementami jest podstawowym zadaniem w większości środowisk administracyjnych, dlatego chcemy szczegółowo omówić te zadania.
Wyliczanie plików, folderów i kluczy rejestru
Ponieważ pobieranie kolekcji elementów z określonej lokalizacji jest tak typowym zadaniem, polecenie cmdlet Get-ChildItem zostało zaprojektowane specjalnie w celu zwrócenia wszystkich elementów znajdujących się w kontenerze, takim jak folder.
Jeśli chcesz zwrócić wszystkie pliki i foldery znajdujące się bezpośrednio w folderze C:\Windows, wpisz:
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-16 8:10 AM 0 0.log
-a--- 2005-11-29 3:16 PM 97 acc1.txt
-a--- 2005-10-23 11:21 PM 3848 actsetup.log
...
Lista wygląda podobnie do tego, co można zobaczyć po wprowadzeniu polecenia dir w cmd.exe, albo polecenia ls w powłoce poleceń systemu Unix.
Złożone listy można wykonywać przy użyciu parametrów polecenia cmdlet Get-ChildItem. Aby zobaczyć składnię polecenia cmdlet Get-ChildItem, wpisz:
Get-Command -Name Get-ChildItem -Syntax
Te parametry można mieszać i dopasowywać w celu uzyskania wysoce dostosowanych danych wyjściowych.
Wyświetlanie listy wszystkich zawartych elementów
Aby wyświetlić zarówno elementy w folderze systemu Windows, jak i wszystkie elementy zawarte w podfolderach, użyj parametru RecurseGet-ChildItem. Na liście są wyświetlane wszystkie elementy w folderze systemu Windows i elementy w jego podfolderach. Na przykład:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 1852416 AcGenral.dll
...
Filtrowanie elementów według nazwy
Aby wyświetlić tylko nazwy elementów, użyj parametru NameGet-ChildItem:
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Przymusowe wyświetlanie ukrytych elementów
Elementy ukryte w Eksploratorze plików lub cmd.exe nie są wyświetlane w danych wyjściowych polecenia Get-ChildItem. Aby wyświetlić ukryte elementy, użyj parametru ForceGet-ChildItem.
Na przykład:
Get-ChildItem -Path C:\Windows -Force
Ten parametr nosi nazwę Force, ponieważ można forcownie zastąpić normalne zachowanie polecenia Get-ChildItem.
Force jest powszechnie używanym parametrem, który wymusza wykonanie operacji, jakiej polecenie typu cmdlet normalnie by nie przeprowadziło, chociaż nie może wykonać żadnej akcji, która naruszałaby bezpieczeństwo systemu.
Dopasowywanie nazw elementów używając symboli wieloznacznych
Polecenie Get-ChildItem akceptuje symbole wieloznaczne w ścieżce elementów do listy.
Ponieważ dopasowywanie symboli wieloznacznych jest obsługiwane przez silnik PowerShell, wszystkie polecenia cmdlet, które akceptują symbole wieloznaczne, używają tej samej notacji i mają takie samo zachowanie dopasowania. Notacja symboli wieloznacznych programu PowerShell obejmuje:
- Gwiazdka (
*) pasuje do zera lub większej liczby wystąpień dowolnego znaku. - Znak zapytania (
?) pasuje dokładnie do jednego znaku. - Lewy nawias (
[) i prawy nawias (]) otaczają zestaw znaków do dopasowania.
Oto kilka przykładów działania specyfikacji symboli wieloznacznych.
Aby znaleźć wszystkie pliki w katalogu systemu Windows z sufiksem .log i dokładnie pięć znaków w nazwie podstawowej, wprowadź następujące polecenie:
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
...
-a--- 2006-05-11 6:31 PM 204276 ocgen.log
-a--- 2006-05-11 6:31 PM 22365 ocmsn.log
...
-a--- 2005-11-11 4:55 AM 64 setup.log
-a--- 2005-12-15 2:24 PM 17719 VxSDM.log
...
Aby znaleźć wszystkie pliki rozpoczynające się literą x w katalogu systemu Windows, wpisz:
Get-ChildItem -Path C:\Windows\x*
Aby znaleźć wszystkie pliki, których nazwy zaczynają się od "x" lub "z", wpisz:
Get-ChildItem -Path C:\Windows\[xz]*
Aby uzyskać więcej informacji na temat symboli wieloznacznych, zobacz about_Wildcards.
Wykluczanie elementów
Określone elementy można wykluczyć przy użyciu parametru ExcludeGet-ChildItem. Dzięki temu można wykonywać złożone filtrowanie w jednej instrukcji.
Załóżmy na przykład, że próbujesz znaleźć bibliotekę DLL usługi czasowej systemu Windows w folderze System32, a wszystko, co pamiętasz o nazwie DLL, to to, że zaczyna się od "W" i zawiera "32".
Wyrażenie takie jak w*32*.dll znajdzie wszystkie biblioteki DLL spełniające warunki, ale warto dodatkowo odfiltrować pliki i pominąć wszystkie pliki win32. Możesz pominąć te pliki przy użyciu parametru Exclude z wzorcem win*:
PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude win*
Directory: C:\WINDOWS\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 3/18/2019 9:43 PM 495616 w32time.dll
-a--- 3/18/2019 9:44 PM 35328 w32topl.dll
-a--- 1/24/2020 5:44 PM 401920 Wldap32.dll
-a--- 10/10/2019 5:40 PM 442704 ws2_32.dll
-a--- 3/18/2019 9:44 PM 66048 wsnmp32.dll
-a--- 3/18/2019 9:44 PM 18944 wsock32.dll
-a--- 3/18/2019 9:44 PM 64792 wtsapi32.dll
Mieszanie parametrów Get-ChildItem
W tym samym poleceniu można użyć kilku parametrów polecenia cmdlet Get-ChildItem. Przed połączeniem parametrów upewnij się, że rozumiesz dopasowywanie symboli wieloznacznych. Na przykład następujące polecenie nie zwraca żadnych wyników:
Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
Nie ma żadnych wyników, mimo że istnieją dwie biblioteki DLL rozpoczynające się literą "z" w folderze systemu Windows.
Nie zwrócono żadnych wyników, ponieważ symbol wieloznaczny został określony jako część ścieżki. Mimo że polecenie było cykliczne, polecenie cmdlet Get-ChildItem ograniczyło elementy do tych, które znajdują się w folderze systemu Windows z nazwami kończącymi się .dll.
Aby określić cykliczne wyszukiwanie plików, których nazwy pasują do specjalnego wzorca, użyj parametru Include.
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll