Поделиться через


Get-ChildItem

Получает элементы и дочерние элементы в одном или нескольких указанных расположениях

Синтаксис

Get-ChildItem
   [[-Path] <string[]>]
   [[-Filter] <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]
Get-ChildItem
   [[-Filter] <string>]
   -LiteralPath <string[]>
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]

Описание

Командлет Get-ChildItem получает элементы в одном или нескольких указанных расположениях. Если элемент является контейнером, командлет получает элементы внутри контейнера, называемые дочерними элементами. Параметр Recurse можно использовать для получения элементов во всех дочерних контейнерах, а параметр Depth — для ограничения количества уровней для рекурсии.

Get-ChildItem не отображает пустые каталоги. Get-ChildItem Если команда включает параметры Depth или Recurse, пустые каталоги не включаются в выходные данные.

Расположения предоставляются Get-ChildItem поставщиками PowerShell. Расположением может быть каталог файловой системы, куст реестра или хранилище сертификатов. Дополнительные сведения см. в разделе about_Providers.

Примеры

Пример 1. Получение дочерних элементов из каталога файловой системы

Этот пример получает дочерние элементы из каталога файловой системы. Отображаются имена файлов и подкаталогов. Для пустых расположений команда не возвращает выходные данные и возвращается в строку PowerShell.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test. Get-ChildItem отображает файлы и каталоги в консоли PowerShell.

Get-ChildItem -Path C:\Test

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     08:29                Logs
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a----         2/1/2019     08:43            183 CreateTestFile.ps1
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

По умолчанию Get-ChildItem перечисляет режим (Атрибуты), LastWriteTime, размер файла (Length) и имя элемента. Буквы в свойстве Mode можно интерпретировать следующим образом:

  • l (ссылка)
  • d (каталог)
  • a (архив)
  • r (только для чтения)
  • h (скрытый)
  • s (система).

Дополнительные сведения о флагах режима см. в разделе about_Filesystem_Provider.

Пример 2. Получение имен дочерних элементов в каталоге

В этом примере перечислены только имена элементов в каталоге.

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test. Параметр Name возвращает только имена файлов или каталогов из указанного пути.

Get-ChildItem -Path C:\Test -Name

Logs
anotherfile.txt
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt

Пример 3. Получение дочерних элементов в текущем каталоге и подкаталогах

В этом примере отображаются .txt файлы, расположенные в текущем каталоге и его подкаталогах.

Get-ChildItem -Path C:\Test\*.txt -Recurse -Force

Directory: C:\Test\Logs\Adirectory

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile4.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile4.txt

    Directory: C:\Test\Logs\Backup

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 ATextFile.txt
-a----        2/12/2019     15:50             20 LogFile3.txt

    Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/12/2019     16:16             20 Afile.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt

    Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-a-h--        2/12/2019     15:52             22 hiddenfile.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

Командлет Get-ChildItem использует параметр Path для указания C:\Test\*.txt. В path используется подстановочный знак звездочки (*) для указания всех файлов с расширением .txt. Параметр Recurse выполняет поиск в каталоге Path его подкаталогов, как показано в разделе Каталог: заголовки. Параметр Force отображает скрытые файлы, hiddenfile.txt например, в режиме h.

Пример 4. Получение дочерних элементов с помощью параметра Include

В этом примере Get-ChildItem используется параметр Include для поиска определенных элементов из каталога, указанного параметром Path .

# When using the -Include parameter, if you don't include an asterisk in the path
# the command returns no output.
Get-ChildItem -Path C:\Test\ -Include *.txt



Get-ChildItem -Path C:\Test\* -Include *.txt

Directory: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/13/2019     08:55             26 anotherfile.txt
-a----        2/12/2019     15:40         118014 Command.txt
-ar---        2/12/2019     14:31             27 ReadOnlyFile.txt

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test. Параметр Path содержит подстановочный знак звездочки (*) для указания содержимого каталога. Параметр Include использует подстановочный знак звездочки (*) для указания всех файлов с расширением имени файла.txt.

При использовании параметра Include для параметра Path требуется подстановочный знак звездочки (*) для указания содержимого каталога. Например, -Path C:\Test\*.

  • Если параметр Recurse добавляется в команду, то в параметре Path не требуется конечная звездочка (*). Параметр Recurse получает элементы из каталога Path и его подкаталогов. Например -Path C:\Test\ -Recurse -Include *.txt.
  • Если в параметр Path не включена завершающая звездочка (*), команда не возвращает выходные данные и возвращается в командную строку PowerShell. Например, -Path C:\Test\.

Пример 5. Получение дочерних элементов с помощью параметра Exclude

В выходных данных примера показано содержимое каталога C:\Test\Logs. Выходные данные являются ссылкой на другие команды, использующие параметры Exclude и Recurse .

Get-ChildItem -Path C:\Test\Logs

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Adirectory
d-----        2/15/2019     08:28                AnEmptyDirectory
d-----        2/15/2019     13:21                Backup
-a----        2/12/2019     16:16             20 Afile.txt
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

Get-ChildItem -Path C:\Test\Logs\* -Exclude A*

Directory: C:\Test\Logs

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/15/2019     13:21                Backup
-a----        2/13/2019     13:26             20 LogFile1.txt
-a----        2/12/2019     16:24             23 systemlog1.log

Командлет Get-ChildItem использует параметр Path для указания каталога C:\Test\Logs. Параметр Exclude использует подстановочный знак звездочки (*), чтобы указать, что все файлы или каталоги, начинающиеся с A или a , исключаются из выходных данных.

При использовании параметра Exclude символ звездочки (*) в параметре Path является необязательным. Например, -Path C:\Test\Logs или -Path C:\Test\Logs\*.

  • Если в параметр Path не включена завершающая звездочка (*), отображается содержимое параметра Path. Исключениями являются имена файлов или подкаталогов, которые соответствуют значению параметра Exclude .
  • Если в параметр Path включена конечная звездочка (*), команда рекурсивируется в подкаталоги параметра Path. Исключениями являются имена файлов или подкаталогов, которые соответствуют значению параметра Exclude .
  • Если параметр Recurse добавляется в команду, выходные данные рекурсии будут одинаковыми, независимо от того, содержит ли параметр Path конечную звездочку (*).

Пример 6. Получение разделов реестра из куста реестра

В этом примере извлекается все разделы реестра из HKEY_LOCAL_MACHINE\HARDWARE.

Get-ChildItem использует параметр Path для указания раздела HKLM:\HARDWAREреестра . Путь к кусту и верхний уровень разделов реестра отображаются в консоли PowerShell.

Дополнительные сведения см. в разделе about_Registry_Provider.

Get-ChildItem -Path HKLM:\HARDWARE

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name             Property
----             --------
ACPI
DESCRIPTION
DEVICEMAP
RESOURCEMAP
UEFI

Get-ChildItem -Path HKLM:\HARDWARE -Exclude D*

Hive: HKEY_LOCAL_MACHINE\HARDWARE

Name                           Property
----                           --------
ACPI
RESOURCEMAP

Первая команда отображает содержимое HKLM:\HARDWARE раздела реестра. Параметр Exclude указывает, что Get-ChildItem не следует возвращать подразделы, начинающиеся с D*. В настоящее время параметр Exclude работает только с подразделами, но не со свойствами элементов.

Пример 7. Получение всех сертификатов с помощью центра подписи кода

В этом примере возвращается каждый сертификат на диске PowerShell Cert: с центром подписи кода.

Командлет Get-ChildItem использует параметр Path для указания поставщика Cert: . Параметр Recurse выполняет поиск в каталоге, указанном в параметре Path , и его подкаталогах. Параметр CodeSigningCert получает только сертификаты, имеющие центр подписывания кода.

Get-ChildItem -Path Cert:\* -Recurse -CodeSigningCert

Дополнительные сведения о поставщике сертификатов и диске Cert: см. в разделе about_Certificate_Provider.

Пример 8. Получение элементов с помощью параметра Depth

В этом примере отображаются элементы в каталоге и его подкаталогах. Параметр Depth определяет количество уровней подкаталога, включаемых в рекурсию. Пустые каталоги исключаются из выходных данных.

Get-ChildItem -Path C:\Parent -Depth 2

Directory: C:\Parent

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level1
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:24                SubDir_Level2
-a----        2/13/2019     08:55             26 file.txt

    Directory: C:\Parent\SubDir_Level1\SubDir_Level2

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2/14/2019     10:22                SubDir_Level3
-a----        2/13/2019     08:55             26 file.txt

Командлет Get-ChildItem использует параметр Path для указания C:\Parent. Параметр Depth задает два уровня рекурсии. Get-ChildItem отображает содержимое каталога, указанного параметром Path, и два уровня подкаталогов.

Пример 9. Получение сведений о жесткой ссылке

В PowerShell 6.2 было добавлено альтернативное представление для получения сведений о жесткой ссылке.

Get-ChildItem -Path C:\PathContainingHardLink | Format-Table -View childrenWithHardLink

Пример 10. Выходные данные для операционных систем, отличных от Windows

В PowerShell 7.1 в системах Unix предоставляет выходные Get-ChildItem данные, подобные Unix:

PS> Get-ChildItem /etc/r*

Directory: /etc

UnixMode   User Group    LastWriteTime Size Name
--------   ---- -----    ------------- ---- ----
drwxr-xr-x root wheel  9/30/2019 19:19  128 racoon
-rw-r--r-- root wheel  9/26/2019 18:20 1560 rc.common
-rw-r--r-- root wheel  7/31/2017 17:30 1560 rc.common~previous
-rw-r--r-- root wheel  9/27/2019 20:34 5264 rc.netboot
lrwxr-xr-x root wheel  11/8/2019 15:35   22 resolv.conf -> /private/var/run/resolv.conf
-rw-r--r-- root wheel 10/23/2019 17:41    0 rmtab
-rw-r--r-- root wheel 10/23/2019 17:41 1735 rpc
-rw-r--r-- root wheel  7/25/2017 18:37 1735 rpc~previous
-rw-r--r-- root wheel 10/23/2019 18:42  891 rtadvd.conf
-rw-r--r-- root wheel  8/24/2017 21:54  891 rtadvd.conf~previous

Новые свойства, которые теперь являются частью выходных данных:

  • UnixMode — это разрешения файла, представленные в системе Unix.
  • Пользователь является владельцем файла
  • Группа является владельцем группы
  • Size — это размер файла или каталога, представленный в системе Unix.

Примечание

Эта функция была перенесена из экспериментальной в основную версию PowerShell 7.1.

Пример 11. Получение целевого объекта связи для точки соединения

Команда dir в командной оболочке Windows показывает целевое расположение точки соединения файловой системы. В PowerShell эти сведения доступны из свойства LinkTarget объекта файловой системы, возвращенного Get-ChildItem и отображаются в выходных данных по умолчанию.

PS D:\> New-Item -ItemType Junction -Name tmp -Target $env:TEMP
PS D:\> Get-ChildItem | select name,LinkTarget

Name     LinkTarget
----     ----------
tmp      C:\Users\user1\AppData\Local\Temp

PS D:\> Get-ChildItem

    Directory: D:\

Mode          LastWriteTime    Length Name
----          -------------    ------ ----
l----   12/16/2021  9:29 AM           tmp -> C:\Users\user1\AppData\Local\Temp

Параметры

-Attributes

Извлекает файлы и папки с указанными атрибутами. Этот параметр поддерживает все атрибуты и позволяет указывать сложные сочетания атрибутов.

Например, чтобы извлечь зашифрованные или сжатые файлы, не являющиеся системными (которые не являются каталогами), введите следующее:

Get-ChildItem -Attributes !Directory+!System+Encrypted, !Directory+!System+Compressed

Чтобы найти файлы и папки с часто используемыми атрибутами, используйте параметр Attributes . Или параметры Directory, File, Hidden, ReadOnly и System.

Параметр Attributes поддерживает следующие свойства:

  • Архив
  • Compressed
  • Устройство
  • Каталог
  • Зашифрована
  • Скрыта
  • IntegrityStream
  • Обычный
  • NoScrubData
  • NotContentIndexed
  • В отключенном режиме
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • Системные функции
  • Временные процедуры

Описание этих атрибутов см. в разделе Перечисление FileAttributes.

Чтобы объединить атрибуты, используйте следующие операторы:

  • ! (НЕ)
  • + (AND)
  • , (ИЛИ)

Не используйте пробелы между оператором и его атрибутом. Пробелы принимаются после запятых.

Для распространенных атрибутов используйте следующие сокращения:

  • D (Каталог)
  • H (Скрытый)
  • R (только для чтения)
  • S (Система)
Type:FlagsExpression<T>[FileAttributes]
Accepted values:Archive, Compressed, Device, Directory, Encrypted, Hidden, IntegrityStream, Normal, NoScrubData, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Этот параметр был добавлен в PowerShell 5.0 и позволяет управлять глубиной рекурсии. По умолчанию Get-ChildItem отображает содержимое родительского каталога. Параметр Depth определяет количество уровней подкаталога, включенных в рекурсию, и отображает содержимое.

Например, Depth 2 включает каталог параметра Path , первый уровень подкаталогов и второй уровень подкаталогов. По умолчанию в выходные данные включаются имена каталогов и файлов.

Примечание

На компьютере с Windows из PowerShell или cmd.exeможно отобразить графическое представление структуры каталогов с помощью команды tree.com .

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Directory

Чтобы получить список каталогов, используйте параметр Directory или Атрибуты со свойством Directory . Параметр Recurse можно использовать с каталогом.

Type:SwitchParameter
Aliases:ad, d
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Указывает массив из одного или нескольких шаблонов строк, которые будут сопоставляться по мере получения командлетом дочерних элементов. Любой соответствующий элемент исключается из выходных данных. Введите элемент пути или шаблон, например *.txt или A*. Принимаются символы-шаблоны.

Символ звездочки (*) в параметре Path является необязательным. Например, -Path C:\Test\Logs или -Path C:\Test\Logs\*. Если включена завершающая звездочка (*), команда рекурсивируется в подкаталоги параметра Path . Без звездочки (*) отображается содержимое параметра Path . Дополнительные сведения см. в примере 5 и разделе "Заметки".

Параметры Include и Exclude можно использовать вместе. Однако исключения применяются после включений, что может повлиять на конечные выходные данные.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-File

Чтобы получить список файлов, используйте параметр File . Параметр Recurse можно использовать с Файлом.

Type:SwitchParameter
Aliases:af
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

Указывает фильтр для определения параметра Path . Поставщик FileSystem является единственным установленным поставщиком PowerShell, поддерживающим фильтры. Фильтры более эффективны, чем другие параметры. Поставщик применяет фильтр, когда командлет получает объекты вместо того, чтобы PowerShell фильтровать объекты после их извлечения. Строка фильтра передается в API .NET для перечисления файлов. API поддерживает * только подстановочные знаки и ? .

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

По умолчанию командлет отображает символьные ссылки на каталоги, Get-ChildItem найденные во время рекурсии, но не выполняет повторение в них. Используйте параметр FollowSymlink для поиска каталогов, предназначенных для этих символических ссылок. FollowSymlink является динамическим параметром и поддерживается только в поставщике FileSystem.

Этот параметр появился в PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Позволяет командлету получать элементы, к которым в противном случае пользователь не может получить доступ, например скрытые или системные файлы. Параметр Force не переопределяет ограничения безопасности. Реализация зависит от поставщика. Дополнительные сведения см. в разделе about_Providers.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Hidden

Чтобы получить только скрытые элементы, используйте параметр Hidden или Attributes со свойством Hidden . По умолчанию Get-ChildItem не отображает скрытые элементы. Используйте параметр Force для получения скрытых элементов.

Type:SwitchParameter
Aliases:ah, h
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Указывает массив из одного или нескольких шаблонов строк, которые будут сопоставляться по мере получения командлетом дочерних элементов. Любой соответствующий элемент включается в выходные данные. Введите элемент пути или шаблон, например "*.txt". Можно использовать подстановочные знаки. Параметр Include действует, только если команда включает содержимое элемента, например C:\Windows\*, где подстановочный знак указывает содержимое C:\Windows каталога.

Параметры Include и Exclude можно использовать вместе. Однако исключения применяются после включений, что может повлиять на конечные выходные данные.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell, что никакие символы не интерпретируются как escape-последовательности.

Дополнительные сведения см. в разделе about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Возвращает только имена элементов в расположении. Выходные данные — это строковый объект, который может быть отправлен по конвейеру другим командам. Разрешено использовать подстановочные знаки.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Path

Указывает путь к одному или нескольким расположениям. Подстановочные знаки принимаются. Расположением по умолчанию является текущий каталог (.).

Type:String[]
Position:0
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ReadOnly

Чтобы получить только элементы, доступные только для чтения, используйте параметр ReadOnly или свойство Атрибуты ReadOnly.

Type:SwitchParameter
Aliases:ar
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Recurse

Получает элементы в указанных расположениях и всех дочерних элементах расположений.

Type:SwitchParameter
Aliases:s
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-System

Возвращает только системные файлы и каталоги. Чтобы получить только системные файлы и папки, используйте параметр System или Атрибуты параметра System свойство .

Type:SwitchParameter
Aliases:as
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

String

Можно передать по конвейеру строку, содержащую путь, в Get-ChildItem.

Выходные данные

Object

Тип возвращаемого Get-ChildItem объекта определяется объектами в пути к диску поставщика.

String

При использовании параметра Get-ChildItemName возвращает имена объектов в виде строк.

Примечания

  • Get-ChildItem можно запускать с помощью любого из встроенных псевдонимов, ls, dirи gci. Подробнее см. в статье about_Aliases.
  • Get-ChildItem по умолчанию не получает скрытые элементы. Чтобы получить скрытые элементы, используйте параметр Force.
  • Командлет Get-ChildItem предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PSProvider. Дополнительные сведения см. в разделе about_Providers.