Praca z plików, folderów i kluczy rejestruWorking With Files, Folders and Registry Keys

Program Windows PowerShell korzysta rzeczownikiem elementu do odwoływania się do elementów na dysk programu Windows PowerShell.Windows PowerShell uses the noun Item to refer to items found on a Windows PowerShell drive. Podczas pracy z dostawcą programu Windows PowerShell w systemie plików elementu może być pliku, folderu lub dysk programu Windows PowerShell.When dealing with the Windows PowerShell FileSystem provider, an Item might be a file, a folder, or the Windows PowerShell drive. Wyświetlanie i Praca z tych elementów jest krytyczne zadanie podstawowe w większość ustawień administracyjnych, więc chcemy tych zadań szczegółowo omówiono w nim.Listing and working with these items is a critical basic task in most administrative settings, so we want to discuss these tasks in detail.

Wyliczanie plików, folderów i kluczy rejestru (Get-ChildItem)Enumerating Files, Folders, and Registry Keys (Get-ChildItem)

Ponieważ pobierania kolekcję elementów z określonej lokalizacji jest takie typowe zadania, Get-ChildItem polecenia cmdlet zaprojektowane z myślą o zwraca wszystkie elementy znalezione w kontenerze, takie jak folder.Since getting a collection of items from a particular location is such a common task, the Get-ChildItem cmdlet is designed specifically to return all items found within a container such as a folder.

Jeśli chcesz przywrócić wszystkie pliki i foldery, które znajdują się bezpośrednio w folderze C:\systemu Windows, wpisz:If you want to return all files and folders that are contained directly within the folder C:\Windows, type:

PS> Get-ChildItem -Path C:\Windows
    Directory: Microsoft.Windows 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
...

Listę wygląda podobnie do będzie widoczna po wprowadzeniu dir w Cmd.exe, lub ls polecenie w powłoce poleceń systemu UNIX.The listing looks similar to what you would see when you enter the dir command in Cmd.exe, or the ls command in a UNIX command shell.

Listy bardzo skomplikowane, można wykonać przy użyciu parametrów Get-ChildItem polecenia cmdlet.You can perform very complex listings by using parameters of the Get-ChildItem cmdlet. Przedstawiono kilka scenariuszy dalej.We will look at a few scenarios next. Można sprawdzić składnię Get-ChildItem polecenia cmdlet, wpisując:You can see the syntax the Get-ChildItem cmdlet by typing:

Get-Command -Name Get-ChildItem -Syntax

Te parametry można mieszany i dopasować do pobrania danych wyjściowych wysoce dostosowane.These parameters can be mixed and matched to get highly customized output.

Wyświetlanie wszystkich elementów zawartych (-Recurse)Listing all Contained Items (-Recurse)

Aby wyświetlić elementów znajduje się w folderze systemu Windows i wszystkie elementy, które są zawarte w podfolderach, użyj Recurse parametr Get-ChildItem.To see both the items inside a Windows folder and any items that are contained within the subfolders, use the Recurse parameter of Get-ChildItem. Listę Wyświetla wszystkie elementy w folderze systemu Windows i elementów w jego podfolderach.The listing displays everything within the Windows folder and the items in its subfolders. Przykład:For example:

PS> Get-ChildItem -Path C:\WINDOWS -Recurse

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS
    Directory: Microsoft.Windows 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 (-Name)Filtering Items by Name (-Name)

Aby wyświetlić tylko nazwy elementów, użyj nazwa parametr Get-Childitem:To display only the names of items, use the Name parameter of Get-Childitem:

PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...

Wymuś wyświetlanie ukrytych elementów (-Force)Forcibly Listing Hidden Items (-Force)

Elementy, które nie są zwykle widoczne w Eksploratorze plików lub Cmd.exe nie są wyświetlane w danych wyjściowych Get-ChildItem polecenia.Items that are normally invisible in File Explorer or Cmd.exe are not displayed in the output of a Get-ChildItem command. Aby wyświetlić ukryte elementy, użyj życie parametr Get-ChildItem.To display hidden items, use the Force parameter of Get-ChildItem. Przykład:For example:

Get-ChildItem -Path C:\Windows -Force

Ten parametr jest o nazwie Force, ponieważ wymuszanie można zastąpić normalne zachowanie Get-ChildItem polecenia.This parameter is named Force because you can forcibly override the normal behavior of the Get-ChildItem command. Wymuś jest powszechnie używany parametr, który wymusza akcję, która zwykle nie może wykonać polecenia cmdlet, mimo że nie będzie wykonywać żadnych czynności, które obniża zabezpieczeń systemu.Force is a widely used parameter that forces an action that a cmdlet would not normally perform, although it will not perform any action that compromises the security of the system.

Zgodne z nazwami elementów z symbolami wieloznacznymiMatching Item Names with Wildcards

Get-ChildItem polecenie akceptuje symbole wieloznaczne w ścieżce elementów do listy.The Get-ChildItem command accepts wildcards in the path of the items to list.

Ponieważ wieloznacznych jest obsługiwany przez aparat programu Windows PowerShell, wszystkie polecenia cmdlet, które akceptuje symboli wieloznacznych używają tego samego notacji i ma takie samo zachowanie dopasowania.Because wildcard matching is handled by the Windows PowerShell engine, all cmdlets that accepts wildcards use the same notation and have the same matching behavior. Obejmuje notacji symbolu wieloznacznego środowiska Windows PowerShell:The Windows PowerShell wildcard notation includes:

  • Znak gwiazdki (*) dopasowuje dowolny znak zero lub więcej wystąpień.Asterisk (*)matches zero or more occurrences of any character.

  • Znak zapytania (?) odpowiada dokładnie jeden znak.Question mark (?) matches exactly one character.

  • Lewy nawias ([) znaków i znak prawego nawiasu (]) otaczające zestaw znaków do dopasowania.Left bracket ([) character and right bracket (]) character surround a set of characters to be matched.

Oto kilka przykładów działania Specyfikacja symboli wieloznacznych.Here are some examples of how wildcard specification works.

Aby znaleźć wszystkie pliki w katalogu systemu Windows wraz z sufiksem log i dokładnie pięć znaków w nazwie podstawowej, wprowadź następujące polecenie:To find all files in the Windows directory with the suffix .log and exactly five characters in the base name, enter the following command:

PS> Get-ChildItem -Path C:\Windows\?????.log

    Directory: Microsoft.Windows 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, które zaczynają się od litery x w katalogu systemu Windows, wpisz:To find all files that begin with the letter x in the Windows directory, type:

Get-ChildItem -Path C:\Windows\x*

Aby znaleźć wszystkie pliki, których nazwy zaczynają się od x lub z, wpisz:To find all files whose names begin with x or z, type:

Get-ChildItem -Path C:\Windows\[xz]*

Wykluczanie elementów (— wyklucz)Excluding Items (-Exclude)

Można wykluczyć określone elementy za pomocą wykluczyć parametr Get-ChildItem.You can exclude specific items by using the Exclude parameter of Get-ChildItem. Dzięki temu można wykonywać złożonych filtrowanie w jednej instrukcji.This lets you perform complex filtering in a single statement.

Na przykład załóżmy, że próbujesz odnaleźć biblioteki DLL usługi Czas systemu Windows w folderze System32, a wszystko, co może zapamiętać o nazwę biblioteki DLL jest zaczyna się od litery "W" i ma w nim "32".For example, suppose you are trying to find the Windows Time Service DLL in the System32 folder, and all you can remember about the DLL name is that it begins with "W" and has "32" in it.

Wyrażenie, takich jak w* 32*. biblioteki dll znajdziesz wszystkie biblioteki dll, które spełniają warunki, ale może również zwrócić Windows 95 i zgodności z systemem Windows 16-bitowych bibliotek DLL, które obejmują "95" lub "16" w ich nazwy.An expression like w*32*.dll will find all DLLs that satisfy the conditions, but it may also return the Windows 95 and 16-bit Windows compatibility DLLs that include "95" or "16" in their names. W przypadku pominięcia pliki, które nie ma żadnej z tych numerów w nazwach przy użyciu wykluczyć parametru za pomocą wzorca *[ 9516]*:You can omit files that have any of these numbers in their names by using the Exclude parameter with the pattern *[9516]*:

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude *[9516]*

Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\System32
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     174592 w32time.dll
-a---        2004-08-04   8:00 AM      22016 w32topl.dll
-a---        2004-08-04   8:00 AM     101888 win32spl.dll
-a---        2004-08-04   8:00 AM     172032 wldap32.dll
-a---        2004-08-04   8:00 AM     264192 wow32.dll
-a---        2004-08-04   8:00 AM      82944 ws2_32.dll
-a---        2004-08-04   8:00 AM      42496 wsnmp32.dll
-a---        2004-08-04   8:00 AM      22528 wsock32.dll
-a---        2004-08-04   8:00 AM      18432 wtsapi32.dll

Mieszanie Get-ChildItem parametrówMixing Get-ChildItem Parameters

Można użyć kilku parametrów Get-ChildItem polecenia cmdlet w tym samym poleceniu.You can use several of the parameters of the Get-ChildItem cmdlet in the same command. Przed mieszać parametrów, upewnij się, że rozumiesz wieloznacznych.Before you mix parameters, be sure that you understand wildcard matching. Na przykład poniższe polecenie zwraca nie zwróciło żadnych wyników:For example, the following command returns no results:

Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

Nie ma żadnych wyników, nawet jeśli istnieją dwa pliki dll, które zaczynają się od litery "z" w folderze systemu Windows.There are no results, even though there are two DLLs that begin with the letter "z" in the Windows folder.

Ponieważ firma Microsoft określony jako część ścieżki symbolu wieloznacznego nie zwrócono żadnych wyników.No results were returned because we specified the wildcard as part of the path. Mimo że polecenie to cykliczne, Get-ChildItem polecenia cmdlet ograniczone elementy do tych, które znajdują się w folderze systemu Windows z nazwami kończą się ciągiem "dll".Even though the command was recursive, the Get-ChildItem cmdlet restricted the items to those that are in the Windows folder with names ending with ".dll".

Aby określić cykliczne wyszukiwanie plików, których nazwy zgodne ze wzorcem specjalne, użyj -obejmują parametru.To specify a recursive search for files whose names match a special pattern, use the -Include parameter.

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM       8261 zoneoc.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     337920 zipfldr.dll