Разное

Powershell gci: Get-ChildItem (Microsoft.PowerShell.Management) — PowerShell | Microsoft Docs

15.05.1970

Содержание

Работа с файлами, папками и разделами реестра — PowerShell

  • Чтение занимает 4 мин

В этой статье

Windows PowerShell использует существительное Item , чтобы ссылаться на элементы, найденные на диске Windows PowerShell. При работе с поставщиком FileSystem Windows PowerShell Item может быть файлом, папкой или диском Windows PowerShell. Создание списков элементов и работа с ними является критически важной задачей в большинстве административных учреждений, поэтому необходимо подробно обсудить ее.

Перечисление файлов, папок и разделов реестра (Get-ChildItem)

Так как получение коллекции элементов из определенного расположения является обычной задачей, командлет Get-ChildItem предназначен специально для возврата всех элементов, найденных в контейнере, например в папке.

Если необходимо вернуть все файлы и папки, которые находятся непосредственно в папке C:\Windows, введите:

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
...

Списки выглядят аналогично тем спискам, которые появляются при вводе команды dir в Cmd.exe или команды ls

в командной оболочке UNIX.

С помощью параметров командлета Get-ChildItem можно создавать очень сложные списки. Далее рассмотрим несколько сценариев. Синтаксис командлета Get-ChildItem можно увидеть, введя следующее.

Get-Command -Name Get-ChildItem -Syntax

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

Перечисление всех элементов в контейнере (-Recurse)

Чтобы увидеть оба элемента в папке Windows и все элементы во вложенных папках, используйте параметр Recurse для Get-ChildItem. В списке отображается все, что находится в папке Windows, а также элементы в ее вложенных папках. Пример:

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
...

Фильтрация элементов по имени (-Name)

Чтобы отобразить только имена элементов, используйте параметр Name для Get-Childitem.

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

Принудительное перечисление скрытых элементов (-Force)

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

Force для Get-ChildItem. Пример:

Get-ChildItem -Path C:\Windows -Force

Этот параметр называется Force, так как позволяет принудительно переопределить обычное поведение команды Get-ChildItem. Параметр Force широко используется для принудительного выполнения действия командлетом. Тем не менее, он не будет выполнять действия, компрометирующие систему безопасности.

Сопоставление имен элементов с подстановочными знаками

Команда Get-ChildItem принимает подстановочные знаки в пути к элементам списка.

Так как сопоставление с подстановочными знаками обрабатывается подсистемой Windows PowerShell, все командлеты, которые принимают подстановочные знаки, используют одну нотацию и имеют одно поведение сопоставления. В нотацию подстановочных знаков Windows PowerShell входит:

  • Звездочка (*) соответствует нулю или большему количеству вхождений любого символа.

  • Знак вопроса (?) соответствует ровно одному символу.

  • Открывающая квадратная скобка ([) и закрывающая квадратная скобка (]) заключают в себя набор символов для сопоставления.

Далее приводится несколько примеров работы спецификации из подстановочных знаков.

Чтобы найти в каталоге Windows все файлы, имеющие суффикс

.log и ровно пять символов в основном имени, введите следующую команду.

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
...

Чтобы найти в каталоге Windows все файлы с именами, начинающимися на букву x, введите следующее.

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

Чтобы найти все файлы с именами, начинающимися на x или z, введите следующее.

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

Дополнительные сведения о подстановочных знаках см. в разделе about_Wildcards.

Исключение элементов (-Exclude)

Вы можете исключить определенные элементы с помощью параметра Exclude для Get-ChildItem. Это позволит вам выполнить сложную фильтрацию в одном операторе.

Например, вы пытаетесь найти библиотеку службы времени Windows в папке System32 и все, что вам известно об имени библиотеки, — то, что оно начинается с W и содержит 32.

Такое выражение, как w*32*.dll, найдет все библиотеки DLL, которые отвечают этим условиям, но вам может потребоваться дополнительно отфильтровать файлы и пропустить все файлы win32. Эти файлы можно пропустить с помощью параметра

Exclude с шаблоном 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

Смешение параметров Get-ChildItem

В одной команде можно использовать несколько параметров командлета Get-ChildItem. Перед тем как комбинировать параметры, убедитесь, что понимаете принципы сопоставления подстановочных знаков. Например, следующая команда не возвращает результатов:

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

Результаты отсутствуют, даже если существуют две библиотеки, которые начинаются на букву z в папке Windows.

Результаты не возвращены, так как подстановочный знак указан как часть пути. Хотя команда и была рекурсивной, командлет Get-ChildItem ограничил элементы до тех, которые находятся в папке Windows с именами, заканчивающимися на .dll.

Чтобы указать рекурсивный поиск для файлов, имена которых соответствуют специальному шаблону, используйте параметр Include .

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

Как получить только каталоги с помощью Get-ChildItem?



Я использую PowerShell 2.0 и хочу передать все подкаталоги определенного пути. Следующая команда выводит все файлы и каталоги, но я не могу понять, как отфильтровать эти файлы.

Get-ChildItem c:\mypath -Recurse

Я пытался использовать $_.Attributes , чтобы получить атрибуты, но тогда я не знаю, как построить буквальный экземпляр System.IO.FileAttributes

, чтобы сравнить его. В cmd.exe году это будет

dir /b /ad /s
powershell powershell-2.0
Поделиться Источник Peter Hull     21 июня 2010 в 14:03

15 ответов


  • Запишите несколько объектов, полученных с помощью Get-ChildItem, в HTML

    В настоящее время я пытаюсь написать сценарий, который создал бы список файлов .txt и .pdf, расположенных в заданном каталоге, с некоторой информацией о нем. Используя Get-ChildItem, я могу получить желаемый результат, но не могу преобразовать его в HTML, потому что при этом я теряю всю информацию…

  • «get-childitem * — recurse» отбрасывает каталоги первого уровня

    Предположим, у нас есть следующая структура каталогов: ~dir00 |-> dir10 | |-> dir20 | |-> file1.txt |-> dir11 |-> file2.txt Теперь предположим, что ~dir00-это текущий каталог. Я бы ожидал двух команд get-childitem * -recurse и get-childitem -recurse , чтобы получить те же…



312

Для PowerShell версий меньше 3.0:

Объект FileInfo , возвращаемый Get-ChildItem , имеет свойство «base», PSIsContainer . Вы хотите выбрать только эти элементы.

Get-ChildItem -Recurse | ?{ $_.PSIsContainer }

Если вам нужны необработанные строковые имена каталогов, вы можете сделать

Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName

Для PowerShell 3.0 и выше:

Get-ChildItem -Directory

Вы также можете использовать псевдонимы dir , ls и gci

Поделиться xcud     21 июня 2010 в 14:31



206

В PowerShell 3.0 это проще:

Get-ChildItem -Directory #List only directories
Get-ChildItem -File #List only files

Поделиться iraSenthil     24 января 2013 в 21:14



54

Воспользуйся

Get-ChildItem -dir #lists only directories
Get-ChildItem -file #lists only files

Если вы предпочитаете псевдонимы, используйте

ls -dir #lists only directories
ls -file #lists only files

или

dir -dir #lists only directories
dir -file #lists only files

Для рекурсии подкаталогов также добавьте параметр -r .

ls -dir -r #lists only directories recursively
ls -file -r #lists only files recursively 

Проверено на PowerShell 4.0, PowerShell 5.0 (Windows 10), PowerShell Ядро 6.0 (Windows 10, Mac и Linux) и PowerShell 7.0 (Windows 10, Mac и Linux).

Примечание : В ядре PowerShell символические ссылки не следуют при указании переключателя -r . Чтобы следовать символическим ссылкам, укажите переключатель -FollowSymlink с -r .

Примечание 2 : PowerShell теперь является кроссплатформенным, начиная с версии 6.0. Кросс-платформенная версия первоначально называлась PowerShell Core, но слово «Core» было отброшено с PowerShell 7.0+.

Документация Get-ChildItem: https://docs.microsoft.com/en-us/powershell/модуль/microsoft.powershell.management/get-childitem

Поделиться Sachin Joseph     28 марта 2015 в 05:38




22

Более чистый подход:

Get-ChildItem "<name_of_directory>" | where {$_.Attributes -match'Directory'}

Интересно, есть ли у PowerShell 3.0 переключатель, который возвращает только каталоги; это кажется логичным для добавления.

Поделиться Carlos Nunez     05 сентября 2012 в 18:01



12

Воспользуйся:

dir -r | where { $_ -is [System.IO.DirectoryInfo] }

Поделиться Marek Dzikiewicz     05 сентября 2012 в 07:34



7

Начиная с PowerShell v2 и более поздних версий (k представляет папку, в которой вы начинаете поиск):

Get-ChildItem $Path -attributes D -Recurse

Если вам нужны только имена папок и ничего больше, используйте это:

Get-ChildItem $Path -Name -attributes D -Recurse

Если вы ищете определенную папку, вы можете использовать следующее. В этом случае я ищу папку под названием myFolder :

Get-ChildItem $Path -attributes D -Recurse -include "myFolder"

Поделиться Bill     24 октября 2013 в 20:30



6

При таком подходе требуется меньше текста:

ls -r | ? {$_.mode -match "d"}

Поделиться jyggorath     22 апреля 2013 в 08:15



4

Воспользуйся:

dir -Directory -Recurse | Select FullName

Это даст вам вывод корневой структуры с именем папки только для каталогов.

Поделиться Wesley     11 июля 2014 в 22:34



4

В принятом ответе упоминается

Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName

чтобы получить «raw string». Но на самом деле будут возвращены объекты типа Selected.System.IO.DirectoryInfo . Для необработанных строк можно использовать следующее:

Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | % { $_.FullName }

Разница имеет значение, если значение объединено в строку:

  • с Select-Object удивительно foo\@{FullName=bar}
  • с ForEach -оператором ожидаемое: foo\bar

Поделиться sevenforce     13 августа 2014 в 11:10



3

Воспользуйся:

Get-ChildItem \\myserver\myshare\myshare\ -Directory | Select-Object -Property name |  convertto-csv -NoTypeInformation  | Out-File c:\temp\mydirectorylist.csv

Что делает следующее

  • Получите список каталогов в целевом расположении: Get-ChildItem \\myserver\myshare\myshare\ -Directory
  • Извлекайте только имена каталогов: Select-Object -Property name
  • Преобразуйте выходные данные в формат CSV: convertto-csv -NoTypeInformation
  • Сохраните результат в файл: Out-File c:\temp\mydirectorylist.csv

Поделиться Marty Gomez     20 октября 2014 в 02:35



3

Вы захотите использовать Get-ChildItem , чтобы сначала рекурсивно получить все папки и файлы. А затем передайте эти выходные данные в предложение Where-Object , которое принимает только файлы.

# one of several ways to identify a file is using GetType() which
# will return "FileInfo" or "DirectoryInfo"
$files = Get-ChildItem E:\ -Recurse | Where-Object {$_.GetType().Name -eq "FileInfo"} ;

foreach ($file in $files) {
  echo $file.FullName ;
}

Поделиться sonjz     12 января 2016 в 18:40



2

Немного более читаемый и простой подход может быть достигнут с помощью приведенного ниже сценария:

$Directory = "./"
Get-ChildItem $Directory -Recurse | % {
    if ($_.Attributes -eq "Directory") {
        Write-Host $_.FullName
    }
}

Надеюсь, это поможет!

Поделиться Zorayr     27 августа 2013 в 23:03


Поделиться Sarrus     03 февраля 2015 в 08:07



0

Используйте этот:

Get-ChildItem -Path \\server\share\folder\ -Recurse -Force | where {$_.Attributes -like '*Directory*'} | Export-Csv -Path C:\Temp\Export.csv -Encoding "Unicode" -Delimiter ";"

Поделиться Hansli     14 августа 2013 в 06:49



0

Чтобы конкретно ответить на исходный вопрос (используя IO.FileAttributes):

Get-ChildItem c:\mypath -Recurse | Where-Object {$_.Attributes -and [IO.FileAttributes]::Directory}

Хотя я предпочитаю решение Марека ( Where-Object { $_ -is [System.IO.DirectoryInfo] } ).

Поделиться Nicolas Melay     04 октября 2017 в 12:47


Похожие вопросы:


Объединить Get-Item с Get-ChildItem?

Я думал, что получу все контейнеры с $containers = Get-ChildItem -path $Path -recurse | ? {$_.psIscontainer -eq $true} , но он, похоже, возвращает обратно только подкаталоги моего $Path . Я…


Powershell, ftp, get-childitem

Немного нового для powershell. Я пытаюсь найти команду get-childitem like, которая будет работать на сайте ftp. Вот некоторые псевдо-код: $target = c:\file.txt $username = username $password =…


Как предотвратить переход Get-ChildItem по определенному каталогу?

Позвольте мне начать с того, что я посмотрел на невозможность исключить каталог с помощью параметра Get-ChildItem-Exclude в Powershell и как я могу исключить несколько папок с помощью…


Запишите несколько объектов, полученных с помощью Get-ChildItem, в HTML

В настоящее время я пытаюсь написать сценарий, который создал бы список файлов .txt и .pdf, расположенных в заданном каталоге, с некоторой информацией о нем. Используя Get-ChildItem, я могу получить…


«get-childitem * — recurse» отбрасывает каталоги первого уровня

Предположим, у нас есть следующая структура каталогов: ~dir00 |-> dir10 | |-> dir20 | |-> file1.txt |-> dir11 |-> file2.txt Теперь предположим, что ~dir00-это текущий каталог. Я бы…


Возвращайте только файлы с Get-childitem в powershell 2

Я знаю, что мы можем использовать файл параметров в Powershell V3.0, но как мы можем получить только файлы с помощью командлета Get-childitem в Powershell V2 ?


Получить только листовые узлы из Get-ChildItem

Я хотел бы отфильтровать только листовые узлы (папки) из Get-ChildItem , те, которые не содержат в себе никаких других папок. Вот мой текущий запрос: Get-ChildItem -Recurse -Directory -Exclude…


Работа с пустыми именами папок при использовании get-childitem в powershell

Я построил скрипт, который рекурсивно просматривает все каталоги с помощью Get-ChildItem . Проблема в том, что существуют каталоги с пустыми именами (сделано с помощью alt+255). Когда скрипт…


Как получить определенные файлы с помощью Get-ChildItem

Я пытаюсь получить все файлы с сегодняшней датой в имени файла. Однако, когда я запускаю это, я получаю следующую ошибку: #Share location $source = U:\Data\* #Sharepoint file location $prefix =…


Powershell — Get-ChildItem подстановочный знак

Get-ChildItem filename*.log.* также получает filename*.log . Как я могу получить только файлы журнала, заканчивающиеся расширением dot filename*.log.* , чтобы я мог их удалить? Я хочу использовать…

Get-ChildItem -force сообщает «Отказано в доступе» в папке «Мои документы» и других точках соединения

Я смог воспроизвести это на компьютере с Windows 7, выполнив следующую команду, вошедшую в систему как пользователь-администратор с именем «admin», запустив PowerShell с повышенными привилегиями и отключив UAC:

get-childitem "c:\users\Admin\my documents"

а также

cd "c:\users\admin\my documents"
get-childitem

Исходя из статьи здесь , похоже, что «Мои документы», «Моя музыка» и т.д. Определены как точки соединения для обратной совместимости с программным обеспечением до Vista. Powershell не очень хорошо работает с точками соединения. Кажется, здесь есть пара вариантов:

1) Удалите -force из команды Get-ChildItem. Это, вероятно, ваш лучший выбор.

get-childitem c:\users -recurse

работает без ошибок и пропускает точки соединения и системные каталоги, такие как AppData.

Примечание редактора: пропуск -Force решает непосредственную проблему, но неизменно пропускает все скрытые элементы, а не только скрытые точки соединения, которые вызывают ошибки запрещенного доступа.

2) Если по какой-то причине вам абсолютно необходимо использовать -Force, вы можете программно выполнить рекурсию каждого подкаталога, пропуская точки соединения. Эта статья описывает механизм определения точек соединения. Скелет этого в файле сценария .ps1 может выглядеть так:

Param( [Parameter(Mandatory=$true)][string]$startLocation )

$errorActionPreference = "Stop"

function ProcessDirectory( $dir )
{
  Write-Host ("Working on " + $dir.FullName)

  # Work on the files in this folder here
  $filesToProcess = ( gci | where { ($_.PsIsContainer -eq 0) } ) # and file matches the requested pattern
  # process files

  $subdirs = gci $dir.FullName -force | where {($_.Attributes -band [IO.FileAttributes]::ReparsePoint) -eq 0 -and ($_.PsIsContainer -eq 1) -and (![string]::IsNullOrEmpty($_.FullName))}

  foreach( $subdir in $subdirs )
  {
      # Write-Host( $subdir.Name + ", " + $subdir.FullName )
     if ( $subdir -ne $null )
     {
       ProcessDirectory -dir $subdir
     }
  }
}

$dirs = get-childitem $startLocation -force
$dirs | foreach { ProcessDirectory -dir $_ }

Как найти все большие файлы на диске с помощью PowerShell

Когда система оповещает вас о том, что на диске заканчивается свободное пространство, первое что делает администратор – пытается найти все большие файлы, которые занимают больше всего места. Вы можете использовать для поиска больших файлов проводник Windows (есть несколько предопределённых шаблонов поиска по размеру), любимый файловый менеджер или сторонние утилиты. Однако все эти средства, в отличии от PowerShell, требует установки на компьютере. Рассмотрим пример быстрого поиска больших файлов на диске с помощью PowerShell.

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

Выведем список 10 самых больших файлов на диске C:\:

Get-ChildItem c:\ -r| sort -descending -property length | select -first 10 name, Length

В зависимости от размера диска и количества файлов на нем, выполнение команды может занять некоторое время.

Ключ –r (Recurse) указывает, что необходимо рекурсивного обойти все вложенные обьекты (каталоги). Можно ограничить проверку определённым уровнем вложенности с помощью параметра –Depth.

Если не указывать путь, поиск будет выполнен по всем подкаталогам в текущем каталоге.

Как вы видите, мы получили список из десяти самых больших файлов на диске, отсортированный в порядке уменьшения размера файла.

Совет. При доступе к некоторым каталогам даже с правами администратора, командлет может вернуть ошибку доступа:

Get-ChildItem : Отказано в доступе по пути "C:\Windows\CSC".
строка:1 знак:1
+ Get-ChildItem c:\ -r|sort -descending -property length | select -firs ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

Чтобы подавить появление таких ошибок используйтей параметр -ErrorAction SilentlyContinue.

Как вы видите, размер файлов отображается в байтах. Для удобства их можно преобразовать в мегабайты. Кроме того, можно вывести каталог, в котором хранится найденный файл:

Get-ChildItem c:\ -r -ErrorAction SilentlyContinue |sort -descending -property length | select -first 10 name, DirectoryName, @{Name="Мб";Expression={[Math]::round($_.length / 1MB, 2)}}

Полученную табличку можно преобразовать в удобную графическую форму с помощью командлета Out-GridView:

Get-ChildItem c:\ -r|sort -descending -property length | select -first 10 name, DirectoryName, @{Name="Мб";Expression={[Math]::round($_.length / 1MB, 2)}} | Out-GridView

Аналогичным образом вы можете найти все файлы, размер которых больше определенного значения, например, 200 Мб):

$size=200*1024*1024
GCi C:\ -recurse -ErrorAction SilentlyContinue | where-object {$_.length -gt $size} | Sort-Object length | ft fullname

Список файлов можно выгрузить в CSV файл так:

GCi C:\ -recurse | where-object {$_.length -gt $size} | Sort-Object length | ft fullname | Export-Csv c:\pc\LargeFiles_Report.csv

Если нужно посчитать размер всех файлов в каталоге, воспользуйтесь статьей: Как определить размер директории с помощью PowerShell.

Get-ChildItem (Microsoft.PowerShell.Management) — PowerShell | Документы Microsoft

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

В этой статье

Синтаксис

  Get-Child  Товар
   [[-Path] <строка []>]
   [[-Фильтр] <строка>]
   [-Include <строка []>]
   [-Exclude <строка []>]
   [-Recurse]
   [-Глубина ]
   [-Сила]
   [-Имя]
   [-Attributes ]
   [-FollowSymlink]
   [-Directory]
   [-Файл]
   [-Скрытый]
   [-ReadOnly]
   [-Система]
   [<Общие параметры>]   
  Get-Child  Товар
   [[-Фильтр] <строка>]
   -LiteralPath <строка []>
   [-Include <строка []>]
   [-Exclude <строка []>]
   [-Recurse]
   [-Глубина ]
   [-Сила]
   [-Имя]
   [-Attributes ]
   [-FollowSymlink]
   [-Directory]
   [-Файл]
   [-Скрытый]
   [-ReadOnly]
   [-Система]
   [<Общие параметры>]   

Описание

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

Get-ChildItem не отображает пустые каталоги. Когда команда Get-ChildItem включает в себя Глубина или Рекурсивные параметры , пустые каталоги не включаются в вывод.

Расположения

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

Примеры

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

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

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

  Get-ChildItem -Path C: \ Test

Каталог: C: \ Test

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ----- 15.02.2019 08:29 Журналы
-a ---- 13.02.2019 08:55 26 anotherfile.txt
-a ---- 12.02.2019 15:40 118014 Command.txt
-a ---- 01.02.2019 08:43 183 CreateTestFile.ps1
-ar --- 12.02.2019 14:31 27 ReadOnlyFile.txt  

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

  • л (ссылка)
  • d (каталог)
  • а (архив)
  • r (только чтение)
  • ч (скрыто)
  • с (система).

Для получения дополнительной информации о флагах режима см. about_Filesystem_Provider.

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

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

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

  Get-ChildItem -Path C: \ Test -Name

Журналы
другой файл.текст
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt  

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

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

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

Каталог: C: \ Test \ Logs \ Adirectory

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a ---- 12.02.2019 16:16 20 Afile4.текст
-a-h-- 12.02.2019 15:52 22 hiddenfile.txt
-a ---- 13.02.2019 13:26 20 LogFile4.txt

    Каталог: C: \ Test \ Logs \ Backup

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a ---- 12.02.2019 16:16 20 ATextFile.txt
-a ---- 12.02.2019 15:50 20 LogFile3.txt

    Каталог: C: \ Test \ Logs

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a ---- 12.02.2019 16:16 20 Файл.текст
-a-h-- 12.02.2019 15:52 22 hiddenfile.txt
-a ---- 13.02.2019 13:26 20 LogFile1.txt

    Каталог: C: \ Test

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a ---- 13.02.2019 08:55 26 anotherfile.txt
-a ---- 12.02.2019 15:40 118014 Command.txt
-a-h-- 12.02.2019 15:52 22 hiddenfile.txt
-ar --- 12.02.2019 14:31 27 ReadOnlyFile.txt  

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

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

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

  # При использовании параметра -Include, если вы не включаете звездочку в путь
# команда не возвращает никаких результатов.
Get-ChildItem -Path C: \ Test \ -Include * .txt



Get-ChildItem -Path C: \ Test \ * -Include *.текст

Каталог: C: \ Test

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
-a ---- 13.02.2019 08:55 26 anotherfile.txt
-a ---- 12.02.2019 15:40 118014 Command.txt
-ar --- 12.02.2019 14:31 27 ReadOnlyFile.txt  

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

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

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

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

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

  Get-ChildItem-Путь C: \ Test \ Logs

Каталог: C: \ Test \ Logs

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
d ----- 15.02.2019 13:21 Adirectory
г ----- 15.02.2019 08:28 AnEmptyDirectory
г ----- 15.02.2019 13:21 Бэкап
-a ---- 12.02.2019 16:16 20 Файл.текст
-a ---- 13.02.2019 13:26 20 LogFile1.txt
-a ---- 12.02.2019 16:24 23 systemlog1.log

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

Каталог: C: \ Test \ Logs

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ----- 15.02.2019 13:21 Бэкап
-a ---- 13.02.2019 13:26 20 LogFile1.txt
-a ---- 12.02.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 отображаются параметры.Исключение составляют имена файлов или подкаталогов, которые соответствуют Исключить значение параметра .
  • Если завершающая звездочка ( * ) включена в параметр Path , команда повторяется в Путь подкаталоги параметра. Исключение составляют имена файлов или подкаталоги, которые соответствуют Исключить значение параметра .
  • Если к команде добавлен параметр Recurse , результат рекурсии будет таким же, независимо от того, не параметр Path включает в себя завершающую звездочку ( * ).

Пример 6: Получить ключи реестра из куста реестра

Этот пример получает все ключи реестра из HKEY_LOCAL_MACHINE \ HARDWARE .

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

Для получения дополнительной информации см. About_Registry_Provider.

  Get-ChildItem -Path HKLM: \ HARDWARE

Улей: HKEY_LOCAL_MACHINE \ HARDWARE

Имя Свойство
---- --------
ACPI
ОПИСАНИЕ
КАРТА УСТРОЙСТВА
КАРТА РЕСУРСОВ
UEFI

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

Улей: HKEY_LOCAL_MACHINE \ HARDWARE

Имя Свойство
---- --------
ACPI
RESOURCEMAP  

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

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

В этом примере получается каждый сертификат на диске PowerShell Cert: с подписью кода. власть.

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

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

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

Пример 8: Получение предметов с помощью параметра глубины

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

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

Каталог: C: \ Parent

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ----- 14.02.2019 10:24 SubDir_Level1
-a ---- 13.02.2019 08:55 26 file.txt

    Каталог: C: \ Parent \ SubDir_Level1

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ----- 14.02.2019 10:24 SubDir_Level2
-a ---- 13.02.2019 08:55 26 файлов.текст

    Каталог: C: \ Parent \ SubDir_Level1 \ SubDir_Level2

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ----- 14.02.2019 10:22 SubDir_Level3
-a ---- 13.02.2019 08:55 26 file.txt  

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

Пример 9: Получение информации о жестких ссылках

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

  Get-ChildItem -Path C: \ PathContainHardLink | Формат-Таблица-Просмотр childrenWithHardLink  

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

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

  PS> Get-ChildItem / etc / r *

Каталог: / etc

Группа пользователей UnixMode LastWriteTime Размер Имя
-------- ---- ----- ------------- ---- ----
drwxr-xr-x root wheel 30.09.2019 19:19 128 енот
-rw-r - r-- корневое колесо 26.09.2019 18:20 1560 rc.общий
-rw-r - r-- root wheel 31.07.2017 17:30 1560 rc.common ~ предыдущая
-rw-r - r-- root wheel 27.09.2019 20:34 5264 rc.netboot
lrwxr-xr-x root wheel 08.11.2019 15:35 22 resolv.conf -> /private/var/run/resolv.conf
-rw-r - r-- корневое колесо 23.10.2019 17:41 0 rmtab
-rw-r - r-- корневое колесо 23.10.2019 17:41 1735 rpc
-rw-r - r-- root wheel 25.07.2017 18:37 1735 rpc ~ предыдущая
-rw-r - r-- корневое колесо 23.10.2019 18:42 891 rtadvd.conf
-rw-r - r-- root wheel 24.08.2017 21:54 891 rtadvd.conf ~ предыдущий  

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

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

Примечание

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

Параметры

-Атрибуты

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

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

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

Чтобы найти файлы и папки с часто используемыми атрибутами, используйте параметр Attributes .Или параметры Каталог , Файл , Скрытый , Только для чтения и Система .

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

  • Архив
  • сжатый
  • Устройство
  • Справочник
  • Зашифрованный
  • Скрытый
  • IntegrityStream
  • Нормальный
  • NoScrubData
  • NotContentIndexed
  • Не в сети
  • Только чтение
  • ReparsePoint
  • SparseFile
  • Система
  • Временное

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

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

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

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

  • D (Справочник)
  • H (скрытый)
  • R (только чтение)
  • S (Система)
905 -Глубина

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

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

Примечание

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

Тип: FlagsExpression [FileAttributes]
Допустимые значения: Архив, сжатый, Устройство, Каталог, Зашифрованный, Скрытый, IntegrityStream, Обычный, NoScrubData, NotContentIndexed, Offline, Repsexed SparseFile, System, Temporary
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложный
Тип: UInt32
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложь Ложные символы подстановки

-Каталог

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

Ввод 905
Тип: SwitchParameter
Псевдонимы: ad, d
Позиция: Именованный
Значение по умолчанию: Ложь
Принимать подстановочные знаки: Ложь

-Исключить

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

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

Параметры Включить и Исключить можно использовать вместе. Однако исключения применяются после включений, которые могут повлиять на конечный результат.

True
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложные Ложные символы подстановки

-Файл

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

Тип: SwitchParameter
Псевдонимы: af
Позиция: Названо
Значение по умолчанию: Нет5 905 Принимать подстановочные знаки: Ложь

-Фильтр

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

Подстановочные символы
Тип: Строка
Позиция: 1
Значение по умолчанию: Нет
Принять конвейерный ввод: Ложные

-FollowSymlink

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

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

Ложный Ложный подстановочный знак Ложный Ложный
Тип: SwitchParameter
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера:

-Force

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

Ложный Ложный Ложный
Тип: SwitchParameter
Позиция: Именованный
Значение по умолчанию: Ложь
Принять ввод конвейера: Ложный Ложный подстановочный знак

-Скрытый

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

конвейер
Тип: SwitchParameter
Псевдонимы: ah, h
Позиция: Имя
Входное значение по умолчанию: Нет
Принимать подстановочные знаки: Ложь

-Включить

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

Параметры Включить и Исключить можно использовать вместе. Однако исключения применяются после включений, которые могут повлиять на конечный результат.

True
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложные Ложные символы подстановки

-LiteralPath

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

Для получения дополнительной информации см. About_Quoting_Rules.

конвейер True
Тип: Строка []
Псевдонимы: PSPath, LP
Позиция: Именованный
Входное значение по умолчанию: Нет
Принимать подстановочные знаки: False

-Name

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

Тип: SwitchParameter
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера:
Ложный символ подстановки

— Путь

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

Тип: Строка []
Позиция: 0
Значение по умолчанию: Текущий каталог
Принять ввод данных конвейера:: True50 905 Подстановочные символы True

-Только для чтения

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

Тип: SwitchParameter
Псевдонимы: ar
Позиция: Названо
Значение по умолчанию: Нет5 905 Принимать подстановочные знаки: Ложь

-Recurse

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

Тип: SwitchParameter
Псевдонимы: s
Позиция: Именованный трубопровод
Значение по умолчанию: Ложный5 905 905 905 905 Принимать подстановочные знаки: Ложь

-Система

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

Тип: SwitchParameter
Псевдонимы: as
Позиция: Имя
Значение по умолчанию: Нет 905 905 905 905 Принимать подстановочные знаки: Ложь

Входы

Строка

Вы можете передать строку, содержащую путь к Get-ChildItem .

Выходы

Объект

Тип объекта, который возвращает Get-ChildItem , определяется объектами на диске поставщика. дорожка.

Строка

Если вы используете параметр Name , Get-ChildItem возвращает имена объектов в виде строк.

Банкноты

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

Get-Item (Microsoft.PowerShell.Management) — PowerShell | Документы Microsoft

Получает элемент в указанном месте.

В этой статье

Синтаксис

  Get-Item
   [-Path] 
   [-Фильтр ]
   [-Include ]
   [-Exclude ]
   [-Сила]
   [-Credential ]
   [-Stream ]
   [<Общие параметры>]  
  Get-Item
   -LiteralPath 
   [-Фильтр ]
   [-Include ]
   [-Exclude ]
   [-Сила]
   [-Credential ]
   [-Stream ]
   [<Общие параметры>]  

Описание

Командлет Get-Item получает элемент в указанном месте.Он не получает содержимое элемент в расположении, если вы не используете подстановочный знак ( * ) для запроса всего содержимого пункт.

Этот командлет используется поставщиками PowerShell для навигации по различным типам хранилищ данных.

Примеры

Пример 1: Получить текущий каталог

В этом примере получается текущий каталог. Точка (‘.’) Представляет элемент в текущем местоположении. (не его содержимое).

  Get-Item.Каталог: C: \

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ---- 26.07.2006 10:01 ps-test  

Пример 2: Получить все элементы в текущем каталоге

Этот пример получает все элементы в текущем каталоге. Подстановочный знак ( * ) представляет все содержимое текущего элемента.

  Получить предмет *

Каталог: C: \ ps-test

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
г ---- 26.07.2006 9:29 Журналы
d ---- 26.07.2006 9:26 Рек.
-a --- 26.07.2006 9:28 Дата 80.csv
-a --- 26.07.2006 10:01 30 filenoext
-a --- 26.07.2006 9:30 11472 process.doc
-a --- 14.07.2006 10:47 30 test.txt  

Пример 3: Получить текущий каталог на диске

В этом примере получается текущий каталог диска C: . Полученный объект представляет только каталог, а не его содержимое.

  Получить элемент C:  

Пример 4: Получить элементы на указанном диске

Этот пример получает элементы с диска C: .Подстановочный знак ( * ) представляет все элементы. в контейнере, а не только в контейнере.

  Получить элемент C: \ *  

В PowerShell используйте одну звездочку ( * ) для получения содержимого вместо традиционного *. * . В формат интерпретируется буквально, поэтому *. * не будет извлекать каталоги или имена файлов без точки.

Пример 5: Получить свойство в указанном каталоге

В этом примере показано свойство LastAccessTime каталога C: \ Windows . LastAccessTime это всего лишь одно свойство каталогов файловой системы. Чтобы увидеть все свойства каталога, введите (Get-Item <имя-каталога>) | Получить Участник .

  (Get-Item C: \ Windows) .LastAccessTime  

Пример 6: Показать содержимое раздела реестра

В этом примере показано содержимое раздела реестра Microsoft.PowerShell . Вы можете использовать это командлет с поставщиком реестра PowerShell для получения разделов и подразделов реестра, но вы должны использовать Get-ItemProperty командлет для получения значений и данных реестра.

  Get-Item HKLM: \ Software \ Microsoft \ Powershell \ 1 \ Shellids \ Microsoft.Powershell \  

Пример 7: Получить элементы в каталоге, для которых есть исключение

Этот пример получает элементы в каталоге Windows с именами, содержащими точку (. ), но не начинаются с w * . Этот пример работает только тогда, когда путь включает подстановочный знак ( * ), чтобы указать содержимое предмета.

  Получить элемент C: \ Windows \ *.* -Исключить «w *»  

Пример 8: Получение информации о жестких ссылках

В PowerShell 6.2 было добавлено альтернативное представление для получения информации о жестких ссылках. Чтобы получить жесткую ссылку информации, направьте вывод в Format-Table -View childrenWithHardlink

  Get-Item C: \ Windows \ System32 \ ntoskrnl.exe | Format-Table -view childrenWithHardLink

Каталог: C: \ Windows \ System32

Режим LastWriteTime Длина Имя
---- ------------- ------ ----
la --- 5/12/2021 7:40 10848576 ntoskrnl.exe  

Свойство Mode идентифицирует жесткую ссылку l в la ---

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

В PowerShell 7.1 в системах Unix командлет Get-Item обеспечивает Unix-подобный вывод:

  PS> Get-Item / Users

Каталог: /

Группа пользователей UnixMode LastWriteTime Размер Имя
-------- ---- ----- ------------- ---- ----
drwxr-xr-x root admin 20.12.2019 11:46 192 Пользователи  

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

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

Примечание

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

Параметры

-Credential

Примечание

Этот параметр не поддерживается поставщиками, установленными вместе с PowerShell. Чтобы выдать себя за другого пользователя или повысить свои учетные данные при запуске этого командлета, используйте Invoke-Command.

Подстановочные символы
Тип: PSCredential
Позиция: Именованный
Значение по умолчанию: Текущий пользователь
Принять ввод конвейера: True

-Исключить

Задает в виде массива строк элемент или элементы, которые этот командлет исключает из операции.Значение этого параметра квалифицирует параметр Path . Введите элемент контура или узор, например * .txt . Подстановочные знаки разрешены. Параметр Exclude действует только тогда, когда команда включает содержимое элемента, например C: \ Windows \ * , где подстановочный знак указывает содержимое каталога C: \ Windows .

True
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложные Ложные символы подстановки

-Фильтр

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

Тип: Строка
Позиция: Именованный
Значение по умолчанию: Нет
Принять конвейерный ввод: Ложные 905 905 Подстановочные символы 905

-Force

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

Ложный Ложный Ложный
Тип: SwitchParameter
Позиция: Именованный
Значение по умолчанию: Ложь
Принять ввод конвейера: Ложный Ложный подстановочный знак

-включить

Задает в виде массива строк элемент или элементы, которые этот командлет включает в операцию.Значение этого параметра квалифицирует параметр Path . Введите элемент контура или узор, например * .txt . Подстановочные знаки разрешены. Параметр Включить действует только тогда, когда команда включает содержимое элемента, например C: \ Windows \ * , где подстановочный знак указывает содержимое каталога C: \ Windows .

True
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Ложные Ложные символы подстановки

-LiteralPath

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

Для получения дополнительной информации см. About_Quoting_Rules.

конвейер True
Тип: Строка []
Псевдонимы: PSPath, LP
Позиция: Именованный
Входное значение по умолчанию: Нет
Принимать подстановочные знаки: False

-Path

Задает путь к элементу.Этот командлет получает элемент в указанном месте. Подстановочный знак символы разрешены. Этот параметр является обязательным, но имя параметра Путь является необязательным.

Используйте точку (. ), чтобы указать текущее местоположение. Используйте подстановочный знак ( * ), чтобы указать все элементы в текущем местоположении.

Тип: Строка []
Позиция: 0
Значение по умолчанию: Нет
Принять ввод конвейера: True50 905 Подстановочные символы50 905 Принять подстановочные символы True

-поток

Примечание

Этот параметр доступен только в Windows.

Получает указанный альтернативный файловый поток NTFS из файла. Введите имя потока. Подстановочные знаки поддерживается. Чтобы получить все потоки, используйте звездочку ( * ). Этот параметр недействителен для папок.

Stream — это динамический параметр, который поставщик FileSystem добавляет к командлету Get-Item . Этот параметр работает только на дисках с файловой системой.

Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет альтернативных файловых потоков
Принять ввод конвейера: 905 Ложные символы 905 : True

Входы

Строка

Вы можете передать строку, содержащую путь к этому командлету, по конвейеру.

Выходы

Объект

Этот командлет возвращает полученные объекты. Тип определяется типом объектов в дорожка.

Банкноты

У этого командлета нет параметра Recurse , поскольку он получает только элемент, а не его содержимое. Чтобы получить содержимое элемента рекурсивно, используйте Get-ChildItem .

Для навигации по реестру используйте этот командлет для получения ключей реестра и Get-ItemProperty для получения значений и данных реестра.Значения реестра считаются свойствами ключ реестра.

Этот командлет предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы перечислить поставщиков доступный в вашем сеансе, введите Get-PsProvider . Для получения дополнительной информации см. about_Providers.

Get-Location (Microsoft.PowerShell.Management) — PowerShell | Документы Microsoft

Получает информацию о текущем рабочем месте или стеке расположений.

В этой статье

Синтаксис

  Get-Location
   [-PSProvider ]
   [-PSDrive ]
   [<Общие параметры>]  
  Get-Location
   [-Куча]
   [-StackName ]
   [<Общие параметры>]  

Описание

Командлет Get-Location получает объект, представляющий текущий каталог, так же, как и печать. команда рабочего каталога (pwd).

Когда вы перемещаетесь между дисками PowerShell, PowerShell сохраняет ваше местоположение на каждом диске. Ты можешь использовать этот командлет, чтобы найти ваше местоположение на каждом диске.

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

Вы также можете использовать этот командлет для отображения местоположений в стеке местоположений. Для получения дополнительной информации см. Примечания и описания параметров Stack и StackName .

Примеры

Пример 1. Отображение текущего местоположения диска

Эта команда отображает ваше местоположение на текущем диске PowerShell.

  PS C: \ Windows> Get-Location

Дорожка
----
C: \ Windows  

Например, если вы находитесь в каталоге Windows на диске C: , он отображает путь к этому каталог.

Пример 2: Отображение вашего текущего местоположения для разных дисков

Этот пример демонстрирует использование Get-Location для отображения вашего текущего местоположения в различных PowerShell диски. Set-Location используется для изменения местоположения на несколько разных путей на разные диски PSD.

  PS C: \> Установить-расположение C: \ Windows
PS C: \ Windows> Установить расположение HKLM: \ Software \ Microsoft
PS HKLM: \ Software \ Microsoft> Set-Location "HKCU: \ Control Panel \ Input Method"
PS HKCU: \ Панель управления \ Метод ввода> Get-Location -PSDrive C

Дорожка
----
C: \ Windows

PS HKCU: \ Панель управления \ Метод ввода> Get-Location -PSDrive HKLM

Дорожка
----
HKLM: \ Программное обеспечение \ Microsoft

PS HKCU: \ Панель управления \ Способ ввода> Установить-расположение C:
PS C: \ Windows> Get-Location -PSProvider Registry

Дорожка
----
HKCU: \ Панель управления \ Способ ввода  

Пример 3: Получение местоположений с помощью стеков

В этом примере показано, как использовать параметры Stack и StackName из Get-Location для вывода списка местоположения в стеке текущего местоположения и стеках альтернативных местоположений.

Командлет Push-Location используется для перехода в три разных места. Третий толчок использует другое имя стека. Параметр Stack команды Get-Location отображает содержимое файла по умолчанию. куча. Параметр StackName команды Get-Location отображает содержимое стека с именем Стек2 .

  PS C: \> Push-Location C: \ Windows
PS C: \ Windows> Система push-Location32
PS C: \ Windows \ System32> Push-расположение WindowsPowerShell -StackName Stack2
C: \ Windows \ System32 \ WindowsPowerShell> Get-Location -Stack

Дорожка
----
C: \ Windows
C: \

C: \ Windows \ System32 \ WindowsPowerShell> Get-Location -StackName Stack2

Дорожка
----
C: \ Windows \ System32  

Пример 4: Настройка приглашения PowerShell

В этом примере показано, как настроить приглашение PowerShell.

  PS C: \>
функциональная подсказка {'PowerShell:' + (Get-Location) + '>'}
PowerShell: C: \>  

Функция, определяющая приглашение, включает команду Get-Location , которая запускается всякий раз, когда в консоли появляется запрос.

Формат приглашения PowerShell по умолчанию определяется специальной функцией с именем prompt . Ты можешь измените приглашение в консоли, создав новую функцию с именем prompt .

Чтобы увидеть текущую функцию приглашения, введите следующую команду: Функция Get-Content: \ prompt

Параметры

-PSDrive

Возвращает текущее местоположение на указанном диске PowerShell.

Например, если вы находитесь на диске Cert: , вы можете использовать этот параметр, чтобы найти свой текущее местоположение на диске C: .

905 Ложь
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера: Принять подстановочные символы

-PSProvider

Возвращает текущее расположение на диске, поддерживаемое указанным поставщиком PowerShell.Если указанный поставщик поддерживает более одного диска, этот командлет возвращает расположение на наиболее диск, к которому недавно обращались.

Например, если вы находитесь на диске C: , вы можете использовать этот параметр, чтобы найти свое текущее местоположение. в дисках провайдера PowerShell Registry .

905 Ложь
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять конвейерный ввод: Принять подстановочные символы

— Стек

Указывает, что этот командлет отображает местоположения, добавленные в текущий стек местоположений.Можете добавить местоположения в стопки с помощью командлета Push-Location .

Чтобы отобразить местоположения в другом стеке местоположений, используйте параметр StackName . Для информацию о стеках местоположений см. в Примечаниях.

Ложный Ложный подстановочный знак Ложный Ложный
Тип: SwitchParameter
Позиция: Именованный
Значение по умолчанию: Нет
Принять ввод конвейера:

-StackName

Задает именованные стеки расположения в виде массива строк.Введите одно или несколько имен стека местоположений.

Чтобы отобразить местоположения в текущем стеке местоположений, используйте параметр Stack . Сделать location стек текущего стека местоположения, используйте командлет Set-Location .

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

905 Ложь
Тип: Строка []
Позиция: Именованный
Значение по умолчанию: Нет
Принять конвейерный ввод: Принять подстановочные символы

Входы

Нет

Вы не можете передать ввод по конвейеру этому командлету.

Выходы

System.Management.Automation.PathInfo или System.Management.Automation.PathInfoStack

Если вы используете параметры Stack или StackName , этот командлет возвращает PathInfoStack объект. В противном случае он возвращает объект PathInfo .

Банкноты

PowerShell поддерживает несколько пространств выполнения для каждого процесса. Каждое пространство выполнения имеет свой собственный текущий каталог . Это не то же самое, что [System.Среда] :: CurrentDirectory . Такое поведение может быть проблемой при вызове API .NET или запуске собственных приложений без указания явных путей к каталогам. Командлет Get-Location возвращает текущий каталог текущего пространства выполнения PowerShell.

Этот командлет предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы перечислить поставщиков в вашем сеанс, введите Get-PSProvider . Для получения дополнительной информации см. about_Providers.

Способы взаимодействия параметров PSProvider , PSDrive , Stack и StackName зависит от провайдера.Некоторые комбинации приведут к ошибкам, например, указание как диска и провайдер, который не выставляет этот диск. Если параметры не указаны, этот командлет возвращает объект PathInfo для поставщика, который содержит текущее рабочее местоположение.

Стек — это список «последним пришел — первым ушел», в котором доступен только последний добавленный элемент. Ты добавлять элементы в стек в том порядке, в котором вы их используете, а затем извлекать их для использования в обратном порядке заказывать. PowerShell позволяет хранить местоположения поставщиков в стеках местоположений.PowerShell создает безымянный стек местоположений по умолчанию, и вы можете создать несколько именованных стеков местоположений. Если ты не укажите имя стека, PowerShell использует стек текущего расположения. По умолчанию безымянный default location — это текущий стек расположения, но вы можете использовать командлет Set-Location , чтобы изменить стек текущего местоположения.

Для управления стеками расположений используйте командлеты PowerShell * -Location , как показано ниже.

  • Чтобы добавить расположение в стек расположения, используйте командлет Push-Location .

  • Чтобы получить местоположение из стека местоположений, используйте командлет Pop-Location .

  • Чтобы отобразить местоположения в текущем стеке местоположений, используйте параметр Stack Get-Location командлет. Чтобы отобразить местоположения в стеке именованных местоположений, используйте StackName параметр командлета Get-Location .

  • Чтобы создать новый стек расположения, используйте параметр StackName командлета Push-Location .Если вы укажете несуществующий стек, Push-Location создаст стек.

  • Чтобы сделать стек местоположений текущим стеком местоположений, используйте параметр StackName Set-Location командлет.

Безымянный стек местоположений по умолчанию полностью доступен, только если он является текущим стеком местоположений. Если вы сделаете стек именованных местоположений текущим стеком местоположений, вы больше не сможете использовать Push-Location или Pop-Location командлеты для добавления или получения элементов из стека по умолчанию или использования этого командлет для отображения местоположений в безымянном стеке.Чтобы сделать безымянный стек текущим стеком, используйте параметр StackName командлета Set-Location со значением $ null или пустым строка ( "" ).

Windows PowerShell Get-ChildItem (gci) -recurse -force

Создание сценариев файлов с помощью Get-Childitem (gci) PowerShell (gci)

Рано или поздно вам понадобится сценарий, который перечисляет файлы в папке. В DOS мы должны ввести: «DIR»; ближайший эквивалент в PowerShell — gci.Полное имя за псевдонимом gci — Get-ChildItem. Вы можете продолжить сравнение, dir / s в DOS переводится как Get-ChildItem -Recurse в PowerShell.

PowerShell Get-ChildItem Topics

Пример 1: Список файлов в корне диска C: \

Вот пример для начала, он перечислит все файлы в корне C: \. Если вам нужна помощь в выполнении кода, см. Здесь.

# Сценарий PowerShell для вывода списка файлов в C: root
Get-Childitem «C: \»

Note 1: В этом случае C: \ является корневым, а Get-Childitem перечисляет все файлы в этом месте.

Примечание 2: Get-Childitem «C: \» одинаково хорошо работает без речевых знаков. Например:
Get-Childitem C: \ Однако обратная косая черта после двоеточия необходима, а если в каталоге есть пробелы, потребуются речевые метки.

Пример 2: Знаменитый параметр GCI -Recurse

Вне PowerShell рекурсия — это малоизвестный глагол, означающий: rerun. Внутри PowerShell Get-ChildItem -Recurse — один из самых известных параметров, означающий: повторение процедуры для подпапок.

Смысл примера 2b состоит в том, чтобы вывести список всех dll в папке Windows. Более того, он будет отображать их CreationTime, что помогает определить, является ли файл актуальным. Этот метод особенно полезен для устранения неполадок с файлами .dll.

Пример 2a: Проблема

Наша цель — найти все библиотеки DLL в папке Windows. Проблема в том, что этот сценарий не выполняет поиск в подкаталоге system32.

# Пример PowerShell gci для перечисления .dll в папке Windows
$ Files = gci «C: \ Windows \» | Где {$ _.extension -eq «.dll»}
$ Файлы | Format-Table Name, CreationTime, Length -auto

Note 3: Я заменил псевдоним gci на Get-ChildItem

Note 4: Этот скрипт перечисляет только 4 dll; наверняка должно быть больше?

Пример 2b: Решение

Чтобы найти .dll в подкаталогах, добавьте параметр Get-ChildItem -Recurse.

# Пример PowerShell для перечисления .dll в папке и подпапках Windows
Write-Host` n «Waiting….»
$ Files = gci» C: \ Windows \ «-Recurse | Где {$ _. Extension -eq» .dll «}
Clear-Host
$ Files | Имя-форматной таблицы, CreationTime, Length -auto

Примечание 5: Я изменил имя на FullName, чтобы он отображал подкаталог, в котором вы можете найти файл. Подробнее о расширении $ _.

Примечание 6: Вы можете отключить сообщения об ошибках, введя это после -Recurse :
-ErrorAction SilentlyContinue

Парень рекомендует: Бесплатная пробная версия монитора производительности сети (NPM) v11.5

SolarWinds Network Performance Monitor поможет вам узнать, что происходит в вашей сети. Эта утилита также поможет вам в устранении неполадок; на приборной панели будет указано, является ли основная причина неисправной ссылкой, неисправным оборудованием или перегрузкой ресурсов.

Что мне больше всего нравится, так это то, как NPM предлагает решения сетевых проблем. Он также имеет возможность отслеживать состояние отдельных виртуальных машин VMware. Если вы заинтересованы в устранении неполадок и создании сетевых карт, я рекомендую вам попробовать NPM прямо сейчас.

Загрузите бесплатную пробную версию монитора производительности сети Solarwinds

Пример 2c: Дополнительное форматирование

Этот пример дает тот же результат, но использует команду форматирования -f и псевдоним Gci.

# Сценарий PowerShell для вывода списка файлов dll в папке C: \ Windows \ System32
$ i = 0
$ Files = Gci «C: \ Windows \» — Recurse -EA 4 | ? {$ _. Extension -eq «.dll»}
Foreach ($ Dll в $ Files) {
«{0, -28} {1, -20} {2,12}» -f `
$ Dll.name, $ DLL.CreationTime, $ Dll.Length
$ i ++
}
Write-Host` n Общее количество dll составляет: $ i

Примечание 7: В этом примере также используются три псевдонима; Моя основная причина заключалась в том, чтобы сделать строку 3 короче. Gci — это псевдоним для нашей избранной команды Get-Childitem, а вопросительный знак (?) — это псевдоним для «где». «-EA 4» означает, что действие при ошибке продолжается.

Примечание 8: Параметр -Recurse идет сразу после имени каталога.Для полноты, местоположение должно быть указано параметром -path, но, поскольку это необязательно, я пропустил параметр -Path в этом скрипте. Однако вот как включить параметр -Path.
$ Files = gci -Path «C: \ Windows \ System32» -Recurse.

Trusty Twosome (Get-Help и Get-Member)

Когда вы обнаруживаете новую команду PowerShell, она извлекает выгоду из того, что я называю «Trusty Twosome». Поэкспериментируйте с Get-Help и Get-Member и откройте новые возможности создания сценариев для Get-Childitem.Чтобы понять, что я имею в виду, попробуйте эти две команды:

# Исследование параметров PowerShell Get-Childitem
Get-Help Get-Childitem

# (Попробуйте help gci) Если вы предпочитаете сокращения.
# (И помогите gci -full) Если вам нравятся примеры.

Примечание 9: Get-Help обнаруживает полезные параметры, такие как -Recurse, -exclude, а также показывает скрытые файлы с помощью: -Force.

# Research PowerShell Свойства Get-Childitem
Get-Help Get-Childitem

Get-Childitem | Get-Member
# (gci | gm) Если вам нравятся псевдонимы.
# (gci | gm -Membertype property) Если нужны только свойства

Примечание. Get-Member показывает свойства, которые вы обычно не видите в проводнике, например CreationTime.

Guy рекомендует: SolarWinds Engineer’s Toolset v10

Этот Engineer’s Toolset v10 предоставляет комплексную консоль из 50 утилит для устранения неполадок компьютера. Гай говорит, что это помогает мне отслеживать, что происходит в сети, и каждый инструмент учит меня больше о том, как работает основная система.

Есть так много хороших гаджетов; это все равно, что получить полную свободу действий в кондитерской. К счастью, утилиты отображаются логично: мониторинг, обнаружение сети, диагностика и инструменты Cisco. Попробуйте набор инструментов SolarWinds Engineer прямо сейчас!

Загрузите полнофункциональную пробную копию Engineer’s Toolset v10

Пример 3: Список ВСЕХ файлов, включая скрытые и системные

# Список ВСЕХ файлов в корне
$ GciFiles = Get-Childitem C: \ -Force
$ GciFiles | Сортировка-объект | FT Name, Attributes -auto
Write-Host «Количество файлов в корне:» $ GciFiles.Count

Note 10: Ключевым дополнением является параметр -Force. Это включает скрытые и системные файлы.

Note 11: Дополнительные команды позволяют нам подсчитывать файлы, что позволяет легко увидеть, что -Force действительно имеет значение. Дважды проверьте, что я имею в виду, запустив сценарий с переключателем -Force, а затем без него.

См. Основные примеры PowerShell с использованием Get-ChildItem »

Пример 4: Фильтр для отображения только системных файлов

# Командлет PowerShell для вывода ТОЛЬКО системных файлов в корне C: \
$ GciFiles = Get-ChildItem» C : \ «-Force | где {$ _.атрибуты -Соответствие «Система»}
$ GciFiles | Сортировка-объект | Имя Format-Table, атрибуты -auto
Write-Host «Количество системных файлов:» $ GciFiles.Count

Note 12: Нам нужно использовать параметр сравнения -Match «System», а не -eq «System» , это потому, что системные файлы также имеют скрытые и другие атрибуты. Следовательно, их атрибут не равен «Системе», хотя он содержит или соответствует слову «Система».

Примечание 13: В последних двух примерах используется расширение.count вместо использования счетчика $ i в предыдущих сценариях. См. Дополнительные сведения о GCI -Exclude и Where-Object.

Задача 1: Повторите команду с параметром -Force и без него.

Задача 2: Замените это новое предложение «where» в строке 3: where {$ _. Attributes -ne «Directory»}. -ne — противоположность -eq. Таким образом, эта команда отфильтровывает запись в каталоге.

# Командлет PowerShell для вывода списка системных файлов в корне C: \
$ GciFiles = gci C: \ -Force | где {$ _.атрибуты -ne «Каталог»}
$ GciFiles | Сортировка-объект | FT Name, Attributes -auto
Write-Host «Количество простых файлов:» $ GciFiles.Count

# Сценарий PowerShell для исследования свойств файла
Get-ChildItem | Get-Member -Membertype свойство

Get-Childitem -Recurse может быть на удивление сложным, если эта конструкция вызывает у вас проблемы, см. Здесь дополнительную справку по -Recurse

Рекомендуется: Анализатор разрешений Solarwinds — Бесплатный инструмент Active Directory

I как Монитор разрешений, потому что он позволяет мне сразу увидеть, КТО имеет разрешения делать ЧТО.Когда вы запускаете этот инструмент, он анализирует эффективные разрешения NTFS для определенного файла или папки и учитывает доступ к сетевому ресурсу, а затем отображает результаты на изящной панели инструментов рабочего стола!

Подумайте обо всех разочарованиях, которые избавляет эта бесплатная утилита SolarWinds, когда вы устраняете проблемы с авторизацией для доступа пользователя к ресурсу. Попробуйте этот монитор разрешений — это бесплатно!

Загрузить Free Permissions Analyzer — Инструмент Active Directory от SolarWinds

Get-ChildItem Псевдоним «Gci»

В Microsoft всегда есть как минимум три способа сделать все, что кажется избыточным, когда вы эксперт, кажется перспективным когда вы новичок.Get-ChildItem имеет не один, а три псевдонима, которые проверяются следующим образом:

# PowerShell Alias ​​GCI
Get-Alias ​​-Definition Get-ChildItem

Результат: dir, ls и gci.

Псевдонимы параметров для Get-ChildItem
Начиная с PowerShell 3.0, вы также можете использовать эти псевдонимы для ПАРАМЕТРОВ

Get-ChildItem C: \
-d или -ad (Каталог)
-af (Файл)
-h , -ah (Скрытый)
-ar (Только чтение)
-as (Система)

Пример 1: Get-ChildItem C: \ -as -force
Пример 2: gci D: \ -ad

Остальная часть семейства элементов

# PowerShell Item Cmdlet Research
Clear-Host
Get-Command -Noun Item

Как и ожидалось, есть командлет Get-Item, но вы можете не осознавать, что есть командлет Move-Item.Исследование PowerShell -Noun или -verb всегда преподносит по крайней мере один сюрприз.

Дополнительные примеры Get-ChildItem »

Краткое описание Get-ChildItem

Get-ChildItem или его псевдоним gci — интересный и важный командлет PowerShell. Интересен тем, что имеет классические параметры, такие как -Force и -Recurse; важно, потому что это основа многих скриптов, которые должны опрашивать не только файловую систему, но и реестр или хранилище сертификатов.

Если вам нравится эта страница, поделитесь ею с друзьями


См. Дополнительные руководства по файлам Microsoft PowerShell:

• Домашняя страница PowerShell • Добавление содержимого • Get-Content • Set-Content • PowerShell -Filter • Test- Путь

• PowerShell Get-ChildItem • Get-ChildItem -Include • Get-ChildItem -Exclude • Compare-Object

• Реестр PowerShell • Get-Credential • PowerShell ItemProperty • PowerShell ItemPropery GCI

Пожалуйста, напишите мне, если у вас есть лучший пример сценария.Также просьба сообщать о любых фактических ошибках, грамматических ошибках или неработающих ссылках, я буду рад исправить ошибку.

Get-ChildItem gci — PowerShell — SS64.com

Get-ChildItem gci — PowerShell — SS64.com

Получите элементы и дочерние элементы в папке или в разделе реестра. Если элемент является контейнером, он получает элементы внутри контейнера, известные как дочерние элементы. Вы можете использовать параметр Recurse для получения элементов во всех дочерних контейнерах. Псевдонимы: dir / ls / gci

 Синтаксис
      Get-ChildItem  [ [-path]  строка  []  |  [-literalPath]  строка  [] ] 
         [-Attributes  FileAttributes ] [[-filter]  string ] [-include  string  []] [-exclude  string  []]
            [-Depth  UInt32 ] [-Name]   [-Directory] [-File] [-Hidden]
               [-ReadOnly] [-recurse] [-force] [-System] [-UseTransaction] [ CommonParameters ]

      Get-ChildItem [-Attributes  FileAttributes ] [-Directory] [-File] [-Force] [-Hidden]
         [-ReadOnly] [-System] [-UseTransaction] [ CommonParameters ]

Ключ
   -path  строка 
       Пути к элементам, из которых нужно получить контент.Подстановочные знаки разрешены. По умолчанию это текущий каталог (.)

   -literalPath  строка 
       Как и в случае с Path, указанным выше, только значение используется точно так, как было введено. [ошибка: игнорирует фильтры]
       Никакие символы не интерпретируются как подстановочные знаки. Если путь включает какие-либо escape-символы, тогда
       заключите путь в одинарные кавычки.
       Одно или несколько местоположений могут быть указаны в виде массива строк.

   -Attributes {ReadOnly | Скрытый | Система | Справочник | Архив | Устройство | Нормальный | Временный | SparseFile |
                ReparsePoint | Сжатый | Offline | NotContentIndexed | Зашифрованный | IntegrityStream | NoScrubData}

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

       Например, чтобы получить зашифрованные или сжатые несистемные файлы (не каталоги), введите:
            Get-ChildItem -Attributes! Directory +! System + зашифрованный,! Directory +! System + сжатый

       Чтобы найти файлы и папки с часто используемыми атрибутами, вы можете использовать параметр Attributes или
        Параметры переключателей -Directory, -File, -Hidden, -ReadOnly и -System.«Обычный» файл - это стандартный файл, не имеющий специальных атрибутов. Этот атрибут действителен, только если он используется отдельно.

       Используйте следующие операторы для объединения атрибутов.
           ! НЕТ
           + И
           ,    ИЛИ ЖЕ
       Между оператором и его атрибутом не допускается использование пробелов. Однако перед запятыми допускаются пробелы.

       Сокращения для часто используемых атрибутов:
           Каталог D
           Скрытый Скрытый
           R Только для чтения
           Система S

   -Глубина  UInt32 
       используйте с –Recurse, чтобы ограничить рекурсию уровнями  UInt32 .-Directory
       Получить каталоги (папки).
       Чтобы получить только каталоги, используйте -Directory и опустите -File.
       Чтобы исключить каталоги, используйте -File и опустите -Directory или используйте параметр -Attributes.
       псевдоним:  ad 

   -Файл
       Получите файлы.
       Чтобы получить только файлы, используйте -File и опустите -Directory.
       Чтобы исключить файлы, используйте -Directory и опустите -File или используйте параметр -Attributes.

   -Скрытый
       Получить только скрытые файлы и каталоги (папки).По умолчанию Get-ChildItem получает только не скрытые элементы, используйте параметр -Force, чтобы включить
       как скрытые, так и не скрытые элементы в результатах.

   -включить  строку 
       Включите только указанные элементы из Пути. например 'Может*'
       Этот параметр действует только в том случае, если команда включает -Recurse для сопоставления файлов.
       или если строка   совпадает с содержимым каталога.
       Итак, чтобы соответствовать C: \ demo \ sample.txt, вы можете использовать: GCI -include * sample.текст
       Для большинства поставщиков, особенно файловой системы, параметр -filter является лучшим / более быстрым способом.
       для фильтрации результатов. например GCI -фильтр sample.txt

   - исключить  строку 
       Пропускайте указанные элементы из пути, например. '* SS64 *'

   -сила
       Получить все элементы, включая скрытые или системные файлы, но не отменять
       безопасность / права доступа к файлам. Вы также можете получить скрытые файлы и папки с помощью -Hidden или
       со скрытым значением параметра -Attributes.-фильтр  строка 
       Фильтр в формате или на языке провайдера.
       Точный синтаксис фильтра (поддержка подстановочных знаков и т. Д.) Зависит от поставщика.
       Фильтр файловой системы будет использовать старый синтаксис Win32 / DOS - подробности см. На странице с подстановочными знаками.
       Фильтры немного более эффективны, чем -include / -exclude, потому что поставщик
       применяет фильтр при извлечении объектов вместо того, чтобы
       PowerShell фильтрует объекты после их получения.-Имя
       Получить только названия предметов.
       Это полезно при передаче имен дочерних элементов другой команде.

   -ReadOnly
       Получить файлы и каталоги (папки) только для чтения.
       Чтобы исключить элементы, доступные только для чтения, используйте параметр -Attributes.
       Псевдоним:  ar 

   -рекурс
       Получите предметы плюс все дочерние предметы в локации (ах).
       Только для путей, указывающих на контейнер, например C: \ Windows или C: \ Windows \ *
       Путь, такой как *.txt не будет иметь дочерних элементов.

   -Глубина  UInt32 

   -Система
       Получить только системные файлы и каталоги (папки).
       Чтобы исключить системные файлы и папки, используйте параметр -Attributes.
       Псевдоним:  как 

   -UseTransaction
       Включите команду в активную транзакцию. 

Стандартные псевдонимы для Get-ChildItem: dir, list, ls, gci

По умолчанию Get-ChildItem получает только не скрытые элементы, но вы можете использовать параметры -Directory, -File, -Hidden, -ReadOnly и -System, чтобы получить только элементы с этими атрибутами.

При перечислении файлов и подкаталогов get-childitem вернет режим (атрибуты), время последней записи, размер (длину) файла и имя файла.
Допустимые режимы (атрибуты): d (каталог), a (архив), r (только для чтения), h (скрытый) и s (системный).

Путь по умолчанию — текущий каталог ‘. ‘
Чтобы указать все элементы в текущем каталоге, используйте ‘*’

Подстановочные знаки

При перечислении одной папки (без рекурсии) вы можете выполнить get-childitem c: \ music \ *.mp3
В отличие от оболочки CMD, в PowerShell фильтр пути c: \ music \ *. Mp3 применяется только к файлам, а не к папкам (или другим контейнерам).

Чтобы применить подстановочный знак рекурсивно ко всему дереву элементов в PowerShell, добавьте параметр -recurse:
get-childitem c: \ music \ *. Mp3 -recurse

или более явно:
get-childitem c: \ music \ — фильтр * .mp3 -recurse

Примеры

Получите дочерние элементы в текущем местоположении:
PS C: \> get-childitem

Получите простой список полных имен файлов, например DIR / b без заголовка, выберите только полное имя:
PS C: \> $ stuff = gci «C: \ какая-то папка» | выберите полное имя
PS C: \> $ stuff.полное имя> demo.txt

Эффект, подобный описанному выше, может быть получен путем передачи результата в формат-таблица –hidetableheaders, однако Format-Table также будет дополнять вывод пробелами.

Получить все файлы .XLS в папке:
PS C: \> get-childitem \\ Server64 \ Work \ * -filter * .xls

Подсчитайте все файлы .XLS в папке и всех подпапках:
PS C: \> $ a = get-childitem \\ Server64 \ Work \ -filter * .xls -Recurse
PS C: \> $ a. Граф

Получить все файлы, принадлежащие BWithers:
PS C: \> PS C: \> get-childitem C: \ Work \ -recurse | get-acl | где {$ _.Владелец матча «BWithers»}

Получить все файлы, включая скрытые, в текущем каталоге, но исключить подкаталоги,
Вторая команда использует псевдонимы и сокращения, но имеет тот же эффект, что и первая. :
PS C: \> Get-ChildItem -Attributes! Directory,! Directory + Hidden
PS C: \> dir -att! D,! D + h

Получить список имен вложенных папок и сохранить в $ папки
PS C: \> $ folder = gci ‘C: \ YourDir’ | Where-Object {($ _. PSIsContainer)} | foreach-object {$ _.Имя}

Измерьте размер папки:
PS C: \> Get-ChildItem C: \ Work \ -Recurse -Force | Измерение-объект-длина свойства-сумма

Получите все сертификаты в хранилище сертификатов, используйте динамический параметр -codesigningcert, чтобы получить только сертификаты с полномочиями подписи кода. (см. «сертификат get-help» для получения дополнительной информации)
PS C: \> get-childitem cert: \. -recurse -codesigningcert

Список сертификатов браузера IE и их отпечатков для текущего пользователя:

PS C: \> Сертификат компакт-диска: \ currentuser \ my
PS C: \> Get-ChildItem

«Вы [люди] думаете, что вы незначительны, в то время как в вас заключена великая вселенная» ~ Али ибн Аби Талиб

Связанные командлеты PowerShell:

Подстановочные знаки — совпадение нескольких элементов.
Get-Item — получает объект файла или объект реестра (или другого пространства имен).
Get-Location — отображение текущего местоположения.
Join-Path -resolve — объединить путь и дочерний путь.


Авторские права © 1999-2021 SS64.com
Некоторые права защищены.

Get-ChildItem | Работа с PowerShell по одному командлету за раз | Еженедельный блог

Это часть продолжающейся серии блогов, написанных Адамом Гордоном. Каждую неделю Адам будет знакомить вас с командой PowerShell, показывая, когда и как использовать каждую из них.На этой неделе Адам покрывает Get-ChildItem .

Когда использовать Get-ChildItem?

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

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

Расположения

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

Какую версию PowerShell я использую для этого блога?

Получите версию PowerShell со своего компьютера :

$ PS Таблица версий

Эта команда показывает информацию о версии PowerShell на вашем компьютере.

Как использовать Get-ChildItem?

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

Get-ChildItem-Путь C: \ PShellTest

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

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

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

  • л (ссылка)
  • d (каталог)
  • а (архив)
  • r (только чтение)
  • ч (скрыто)
  • с (система)

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

Get-ChildItem -Path C: \ PShellTest -Name

Командлет Get-ChildItem использует параметр -Path для указания каталога C: \ PShellTest.

Параметр -Name возвращает только имена файлов или каталогов из указанного пути.

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

Get-ChildItem -Path C: \ Windows \ System32 \ DriverStore \ *. Txt -Recurse -Force

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

Параметр -Recurse ищет в каталоге Path его подкаталоги, как показано в заголовках Directory: . Параметр -Force отображает скрытые файлы с режимом h .

Получить дочерние элементы с помощью параметра Include :

Get-ChildItem -Path C: \ Windows \ System32 \ * -Include * .txt

Командлет Get-ChildItem использует параметр -Path для указания каталога C: \ Windows \ System32.Параметр -Path включает в себя подстановочный знак звездочки (*) для указания содержимого каталога.

Параметр -Include использует подстановочный знак звездочки (*) для указания всех файлов с расширением имени файла .txt .

Когда используется параметр -Include , параметр -Path требует подстановочного знака звездочки (*) в конце для указания содержимого каталога.

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

Получить дочерние элементы с помощью параметра Exclude :

Get-ChildItem -Path C: \ Windows \ System32 \ * -Include * .txt -Exclude C *

Командлет Get-ChildItem использует параметр -Path для указания каталога C: \ Windows \ System32.Параметр -Path включает в себя подстановочный знак звездочки (*) для указания содержимого каталога.

Параметр -Include использует подстановочный знак звездочки (*) для указания всех файлов с расширением имени файла .txt .

Параметр -Exclude использует подстановочный знак звездочки (*), чтобы указать, что любые файлы или каталоги, которые начинаются с C или c , исключаются из вывода.

Когда используется параметр -Include , параметр -Path требует подстановочного знака звездочки (*) в конце для указания содержимого каталога.

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

Получить элементы с помощью параметра глубины :

Get-ChildItem -Path C: \ Azure -Depth 1

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

Выучите команду прошлой недели: Copy-Item.

Требуется обучение PowerShell? Ознакомьтесь с онлайн-курсами ИТ-обучения PowerShell от ITProTV.

Get-ChildItem Командлет PowerShell выведет список всех файлов

В Powershell перечислить все файлы в каталоге — это очень простая задача. Нам нужно использовать только следующую команду, чтобы просто перечислить все файлы только в каталоге.

Содержание:
  • PowerShell Список файлов в каталоге.
  • gci псевдоним для get-chiltitem.
  • псевдоним каталога для get-childitem.
  • PowerShell перечисляет только каталоги.
  • PowerShell перечисляет только каталоги с помощью более короткого сценария.
  • рекурсивно выводит список файлов PowerShell.
  • PowerShell рекурсивно выводит список каталогов.
  • Список файлов определенного типа расширения.
  • PowerShell рекурсивно выводит список файлов определенного типа расширения.
  • Перечислить файлы в глубину подкаталогов.
  • Вердикт.

Люди также ищут:

[решено] Рабочий фрагмент для Start-Job PowerShell 2020

Показанный выше сценарий выполняется, а результат показан на изображении ниже.

получить все файлы в каталоге

Есть много его вариаций, и мы посещаем довольно много из них в этом посте. Мы увидим, как происходит псевдоним gci , а также увидим несколько других псевдонимов. Есть способы получить только каталоги внутри каталогов, а также до определенной глубины .

Мы рассмотрим как можно больше возможностей перечисления файлов в каталоге.

Список файлов PowerShell в каталоге:

Разработчики

PowerShell неоправданно упростили работу с файлами, и папками, в PowerShell. В отличие от традиционных сценариев, нам не нужно слишком много думать о структурировании сценария в PowerShell. Это потому, что PowerShell — это объектно-ориентированный ввод и вывод. Если кто-то разбирается в объектно-ориентированном языке программирования, создание сценариев на PowerShell для них естественно.

Для начала, получив только файлы в каталоге, мы можем использовать командлет get-childitem . Мы добавим в командлет переключатель -file , чтобы получать только файлы из определенного каталога.

получить файл дочернего элемента

Очевидно, это решает нашу проблему. Но можем ли мы сделать сценарий более эффективным? Фактически, мы можем.

gci Псевдоним для Get-ChildItem:

Командлет get-childitem имеет псевдоним gci . Это снижает трудозатраты на написание всего сценария.Приведенный ниже сценарий выдаст нам нужный результат.

gci -file

псевдоним каталога для Get-ChildItem:

Элемент get-childitem также имеет довольно популярный псевдоним. Его можно заменить на dir для получения тех же результатов.

Приведенный выше сценарий выдаст следующий результат.

dir файл

PowerShell список только каталогов:

Мы научились отображать только файлы в определенном каталоге. Теперь мы увидим, как перечислить только каталоги из каталога.Мы можем сделать это с помощью переключателя -directory вместо переключателя -file .

gci -directory

PowerShell список только каталогов, более короткий скрипт:

Мы можем упростить скрипт с помощью переключателя -di . Он доступен, поскольку достаточно однозначно идентифицировать коммутатор — каталог . Используйте следующий сценарий, чтобы вывести список только каталогов в каталоге.

Это даст пользователям следующий результат.

gci -di

PowerShell отображает только файлы во всех папках или каталогах:

Теперь, когда мы увидели, как перечислить только файлы или только папки , мы все еще не научились, как отображать только файлы в каталоге. Это можно сделать с помощью переключателя -recurse . Сценарий приведен ниже.

получать файлы рекурсивно

Ясно, что это отличный сценарий для доступа только к файлам в каталоге или папке.

PowerShell перечисляет только папки во всех папках или каталогах:

Мы можем перечислить только файлы в каталоге, а также последующий дочерний каталог , используя следующий сценарий.

рекурсивные каталоги

PowerShell список файлов с расширением:

При желании мы можем перечислить в каталоге только файлы определенного типа. Мы можем перечислить только PDF-файлы в каталоге, используя следующий сценарий.

рекурсивно только pdfs

PowerShell список файлов расширения:

Мы можем вывести список файлов на новый уровень, рекурсивно перечисляя только файлы расширения. Пример ниже демонстрирует это.

тип файла рекурсивно

Обратите внимание на то, как мы используем переключатель -r вместо переключателя -recurse , поскольку он уменьшает объем ввода, который необходимо выполнить.

PowerShell рекурсивно выводит список файлов расширения с глубиной:

Мы можем перечислить все файлы в каталоге и последующих подкаталогах, используя переключатель -recurse . Мы также можем сузить область поиска, используя расширение файла . Но что, если мы не хотим искать в папках глубже двух подкаталогов. Мы можем использовать переключатель -глубина . В приведенном ниже сценарии это используется.

с глубиной

Приведенный выше скрипт будет get-childitem типов файлов, он будет извлекать до дочерних каталогов 1, он будет делать это рекурсивно и, наконец, он гарантирует, что он будет извлекать только PDF-файлы.

Вердикт:

В этом посте мы узнали о PowerShell. Список всех файлов в каталоге. Мы сделали это с помощью псевдонима get-childitem с именем gci . gci в сочетании с переключателем -file делает то, что нам нужно. Мы также получили файлы определенного расширения. Мы получили файлы определенного расширения рекурсивно, а также до ограниченной глубины.

Если вы хотите больше интересных сообщений, следите за обновлениями TecKangaroo.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *