Compartilhar via


Get-ChildItem

Obtém os itens e os itens filhos de um ou mais locais especificados.

Syntax

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

Description

O Get-ChildItem cmdlet obtém os itens em um ou mais locais especificados. Se o item for um contêiner, ele obtém os itens dentro do contêiner, conhecidos como itens filho. Você pode usar o parâmetro Recurse para obter itens em todos os contêineres filho e usar o parâmetro Depth para limitar o número de níveis a serem recursos.

Get-ChildItem não exibe diretórios vazios. Quando um Get-ChildItem comando inclui os parâmetros Depth ou Recurse , os diretórios vazios não são incluídos na saída.

Os locais são expostos Get-ChildItem por provedores do PowerShell. Um local pode ser um diretório do sistema de arquivos, hive do registro ou um repositório de certificados. Para obter mais informações, consulte about_Providers.

Exemplos

Exemplo 1: Obter itens filho de um diretório do sistema de arquivos

Este exemplo obtém os itens filho de um diretório do sistema de arquivos. Os nomes de arquivo e subdiretórios são exibidos. Para locais vazios, o comando não retorna nenhuma saída e retorna ao prompt do PowerShell.

O Get-ChildItem cmdlet usa o parâmetro Path para especificar o diretório C:\Test. Get-ChildItem exibe os arquivos e diretórios no console do PowerShell.

Get-ChildItem -Path C:\Test

Directory: C:\Test

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

Por padrão Get-ChildItem , lista o modo (Atributos), LastWriteTime, tamanho do arquivo (Comprimento) e o Nome do item. As letras na propriedade Mode podem ser interpretadas da seguinte maneira:

  • l (link)
  • d (diretório)
  • a (arquivo morto)
  • r (somente leitura)
  • h (oculto)
  • s (sistema).

Para obter mais informações sobre os sinalizadores de modo, consulte about_Filesystem_Provider.

Exemplo 2: Obter nomes de item filho em um diretório

Este exemplo lista apenas os nomes dos itens em um diretório.

O Get-ChildItem cmdlet usa o parâmetro Path para especificar o diretório C:\Test. O parâmetro Name retorna apenas os nomes de arquivo ou diretório do caminho especificado.

Get-ChildItem -Path C:\Test -Name

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

Exemplo 3: Obter itens filho no diretório e subdiretórios atuais

Este exemplo exibe .txt arquivos localizados no diretório atual e seus subdiretórios.

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

Directory: C:\Test\Logs\Adirectory

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

    Directory: C:\Test\Logs\Backup

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

    Directory: C:\Test\Logs

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

    Directory: C:\Test

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

O Get-ChildItem cmdlet usa o parâmetro Path para especificar C:\Test\*.txt. Path usa o curinga asterisco (*) para especificar todos os arquivos com a extensão .txtfilename . O parâmetro Recurse pesquisa o diretório Path de seus subdiretórios, conforme mostrado nos títulos Diretório: . O parâmetro Force exibe arquivos ocultos, como hiddenfile.txt que têm um modo de h.

Exemplo 4: Obter itens filho usando o parâmetro Include

Neste exemplo Get-ChildItem , usa o parâmetro Include para localizar itens específicos do diretório especificado pelo parâmetro Path .

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



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

Directory: C:\Test

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

O Get-ChildItem cmdlet usa o parâmetro Path para especificar o diretório C:\Test. O parâmetro Path inclui um curinga de asterisco à direita (*) para especificar o conteúdo do diretório. O parâmetro Include usa um curinga asterisco (*) para especificar todos os arquivos com a extensão de nome de arquivo.txt.

Quando o parâmetro Include é usado, o parâmetro Path precisa de um curinga de asterisco à direita (*) para especificar o conteúdo do diretório. Por exemplo, -Path C:\Test\*.

  • Se o parâmetro Recurse for adicionado ao comando , o asterisco à direita (*) no parâmetro Path será opcional. O parâmetro Recurse obtém itens do diretório Path e seus subdiretórios. Por exemplo, -Path C:\Test\ -Recurse -Include *.txt
  • Se um asterisco à direita (*) não estiver incluído no parâmetro Path , o comando não retornará nenhuma saída e retornará ao prompt do PowerShell. Por exemplo, -Path C:\Test\.

Exemplo 5: Obter itens filho usando o parâmetro Excluir

A saída do exemplo mostra o conteúdo do diretório C:\Test\Logs. A saída é uma referência para os outros comandos que usam os parâmetros Excluir e Recurso .

Get-ChildItem -Path C:\Test\Logs

Directory: C:\Test\Logs

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

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

Directory: C:\Test\Logs

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

O Get-ChildItem cmdlet usa o parâmetro Path para especificar o diretório C:\Test\Logs. O parâmetro Exclude usa o curinga asterisco (*) para especificar todos os arquivos ou diretórios que começam com A ou um são excluídos da saída.

Quando o parâmetro Exclude é usado, um asterisco à direita (*) no parâmetro Path é opcional. Por exemplo, -Path C:\Test\Logs ou -Path C:\Test\Logs\*.

  • Se um asterisco à direita (*) não estiver incluído no parâmetro Path , o conteúdo do parâmetro Path será exibido. As exceções são nomes de arquivo ou subdiretórios que correspondem ao valor do parâmetro Exclude .
  • Se um asterisco à direita (*) estiver incluído no parâmetro Path , o comando será recursado nos subdiretórios do parâmetro Path . As exceções são nomes de arquivo ou subdiretórios que correspondem ao valor do parâmetro Exclude .
  • Se o parâmetro Recurse for adicionado ao comando, a saída de recursão será a mesma se o parâmetro Path incluir ou não um asterisco à direita (*).

Exemplo 6: Obter as chaves do Registro de um hive do registro

Este exemplo obtém todas as chaves do Registro de HKEY_LOCAL_MACHINE\HARDWARE.

Get-ChildItem usa o parâmetro Path para especificar a chave HKLM:\HARDWAREdo Registro . O caminho do hive e o nível superior das chaves do Registro são exibidos no console do PowerShell.

Para obter mais informações, consulte about_Registry_Provider.

Get-ChildItem -Path HKLM:\HARDWARE

Hive: HKEY_LOCAL_MACHINE\HARDWARE

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

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

Hive: HKEY_LOCAL_MACHINE\HARDWARE

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

O primeiro comando mostra o conteúdo da chave do HKLM:\HARDWARE Registro. O parâmetro Exclude informa Get-ChildItem para não retornar nenhuma subchave que comece com D*. Atualmente, o parâmetro Exclude só funciona em subchaves, não em propriedades de item.

Exemplo 7: Obter todos os certificados com autoridade de assinatura de código

Este exemplo obtém cada certificado na unidade Cert do PowerShell: que tem autoridade de assinatura de código.

O Get-ChildItem cmdlet usa o parâmetro Path para especificar o provedor Cert: . O parâmetro Recurse pesquisa o diretório especificado por Path e seus subdiretórios. O parâmetro CodeSigningCert obtém apenas certificados que têm autoridade de assinatura de código.

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

Para obter mais informações sobre o provedor de certificados e a unidade Cert: , consulte about_Certificate_Provider.

Exemplo 8: Obter itens usando o parâmetro Depth

Este exemplo exibe os itens em um diretório e seus subdiretórios. O parâmetro Depth determina o número de níveis de subdiretório a serem incluídos na recursão. Diretórios vazios são excluídos da saída.

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

Directory: C:\Parent

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

    Directory: C:\Parent\SubDir_Level1

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

    Directory: C:\Parent\SubDir_Level1\SubDir_Level2

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

O Get-ChildItem cmdlet usa o parâmetro Path para especificar C:\Parent. O parâmetro Depth especifica dois níveis de recursão. Get-ChildItem exibe o conteúdo do diretório especificado pelo parâmetro Path e os dois níveis de subdiretórios.

No PowerShell 6.2, uma exibição alternativa foi adicionada para obter informações de link rígido.

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

Exemplo 10: Saída para sistemas operacionais não Windows

No PowerShell 7.1 em sistemas Unix, o fornece saída semelhante ao Get-ChildItem Unix:

PS> Get-ChildItem /etc/r*

Directory: /etc

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

As novas propriedades que agora fazem parte da saída são:

  • UnixMode são as permissões de arquivo representadas em um sistema Unix
  • O usuário é o proprietário do arquivo
  • Group é o proprietário do grupo
  • Tamanho é o tamanho do arquivo ou diretório, conforme representado em um sistema Unix

Observação

Esse recurso foi movido de experimental para base no PowerShell 7.1.

O dir comando no Shell de Comando do Windows mostra o local de destino de um ponto de junção do sistema de arquivos. No PowerShell, essas informações estão disponíveis na propriedade LinkTarget do objeto filesystem retornado por Get-ChildItem e são exibidas na saída padrão.

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

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

PS D:\> Get-ChildItem

    Directory: D:\

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

Parâmetros

-Attributes

Obtém os arquivos e pastas com os atributos especificados. Esse parâmetro dá suporte a todos os atributos e permite que você especifique combinações complexas de atributos.

Por exemplo, para obter arquivos de fora do sistema (não diretórios) que sejam criptografados ou compactados, digite:

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

Para localizar arquivos e pastas com atributos comumente usados, use o parâmetro Attributes . Ou os parâmetros Directory, File, Hidden, ReadOnly e System.

O parâmetro Attributes dá suporte às seguintes propriedades:

  • Arquivar
  • Compactado
  • Dispositivo
  • Diretório
  • Criptografado
  • Oculto
  • IntegrityStream
  • Normal
  • NoScrubData
  • NotContentIndexed
  • Offline
  • ReadOnly (somente-leitura)
  • ReparsePoint
  • SparseFile
  • System
  • Temporário

Para obter uma descrição desses atributos, consulte a Enumeração FileAttributes.

Para combinar atributos, use os seguintes operadores:

  • ! (NOT)
  • + (AND)
  • , (OR)

Não use espaços entre um operador e seu atributo. Espaços são aceitos após vírgulas.

Para atributos comuns, use as seguintes abreviações:

  • D (Diretório)
  • H (Oculto)
  • R (Somente leitura)
  • S (Sistema)
Type:FlagsExpression<T>[FileAttributes]
Accepted values:Archive, Compressed, Device, Directory, Encrypted, Hidden, IntegrityStream, Normal, NoScrubData, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Esse parâmetro foi adicionado ao PowerShell 5.0 e permite controlar a profundidade da recursão. Por padrão, Get-ChildItem exibe o conteúdo do diretório pai. O parâmetro Depth determina o número de níveis de subdiretório incluídos na recursão e exibe o conteúdo.

Por exemplo, Depth 2 inclui o diretório do parâmetro Path , o primeiro nível de subdiretórios e o segundo nível de subdiretórios. Por padrão, nomes de diretório e nomes de arquivo são incluídos na saída.

Observação

Em um computador Windows do PowerShell ou cmd.exe, você pode exibir uma exibição gráfica de uma estrutura de diretório com o comando tree.com .

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

-Directory

Para obter uma lista de diretórios, use o parâmetro Directory ou o parâmetro Attributes com a propriedade Directory . Você pode usar o parâmetro Recurse com o Directory.

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

-Exclude

Especifica uma matriz de um ou mais padrões de cadeia de caracteres a serem correspondidos à medida que o cmdlet obtém itens filho. Qualquer item correspondente é excluído da saída. Insira um elemento ou padrão de caminho, como *.txt ou A*. Caracteres curinga são aceitos.

Um asterisco à direita (*) no parâmetro Path é opcional. Por exemplo, -Path C:\Test\Logs ou -Path C:\Test\Logs\*. Se um asterisco à direita (*) for incluído, o comando será recursado nos subdiretórios do parâmetro Path . Sem o asterisco (*), o conteúdo do parâmetro Path é exibido. Mais detalhes estão incluídos no Exemplo 5 e na seção Anotações.

Os parâmetros Include e Exclude podem ser usados juntos. No entanto, as exclusões são aplicadas após as inclusões, o que pode afetar a saída final.

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

-File

Para obter uma lista de arquivos, use o parâmetro File . Você pode usar o parâmetro Recurse com File.

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

-Filter

Especifica um filtro para qualificar o parâmetro Path . O provedor FileSystem é o único provedor do PowerShell instalado que dá suporte a filtros. Os filtros são mais eficientes do que outros parâmetros. O provedor aplica o filtro quando o cmdlet obtém os objetos em vez de fazer com que o PowerShell filtre os objetos após serem recuperados. A cadeia de caracteres de filtro é passada para a API do .NET para enumerar arquivos. A API dá suporte apenas a curingas * e ? .

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

Por padrão, o Get-ChildItem cmdlet exibe links simbólicos para diretórios encontrados durante a recursão, mas não se recursa neles. Use o parâmetro FollowSymlink para pesquisar os diretórios direcionados a esses links simbólicos. O FollowSymlink é um parâmetro dinâmico e tem suporte apenas no provedor FileSystem .

Esse parâmetro foi introduzido no PowerShell 6.0.

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

-Force

Permite que o cmdlet obtenha itens que, de outra forma, não podem ser acessados pelo usuário, como arquivos ocultos ou do sistema. O parâmetro Force não substitui as restrições de segurança. A implementação varia entre os provedores. Para obter mais informações, consulte about_Providers.

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

-Hidden

Para obter apenas itens ocultos, use o parâmetro Hidden ou o parâmetro Attributes com a propriedade Hidden . Por padrão, Get-ChildItem não exibe itens ocultos. Use o parâmetro Force para obter itens ocultos.

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

-Include

Especifica uma matriz de um ou mais padrões de cadeia de caracteres a serem correspondidos à medida que o cmdlet obtém itens filho. Qualquer item correspondente é incluído na saída. Insira um elemento ou padrão de caminho, como "*.txt". Caracteres curinga são permitidos. O parâmetro Include só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caractere curinga especifica o conteúdo do C:\Windows diretório.

Os parâmetros Include e Exclude podem ser usados juntos. No entanto, as exclusões são aplicadas após as inclusões, o que pode afetar a saída final.

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

-LiteralPath

Especifica um caminho para um ou mais locais. O valor de LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Para obter mais informações, consulte about_Quoting_Rules.

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

-Name

Obtém apenas os nomes dos itens no local. A saída é um objeto de cadeia de caracteres que pode ser enviado pelo pipeline para outros comandos. Caracteres curinga são permitidos.

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

-Path

Especifica um caminho para um ou mais locais. Você pode usar curingas. O local padrão é o diretório atual (.).

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

-ReadOnly

Para obter apenas itens somente leitura, use o parâmetro ReadOnly ou a propriedade ReadOnly do parâmetro Attributes.

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

-Recurse

Obtém os itens nos locais especificados e em todos os itens filhos dos locais.

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

-System

Obtém apenas arquivos e diretórios do sistema. Para obter apenas arquivos e pastas do sistema, use o parâmetro System ou a propriedade System do parâmetro Attributes.

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

Entradas

String

Você pode canalizar uma cadeia de caracteres que contém um caminho para Get-ChildItem.

Saídas

Object

O tipo de objeto que Get-ChildItem retorna é determinado pelos objetos no caminho da unidade do provedor.

String

Se você usar o parâmetro Name , Get-ChildItem retornará os nomes de objeto como cadeias de caracteres.

Observações

  • Get-ChildItem pode ser executado usando qualquer um dos aliases internos, ls, dire gci. Para obter mais informações, consulte about_Aliases.
  • Get-ChildItem não obtém itens ocultos por padrão. Para obter itens ocultos, use o parâmetro Force.
  • O Get-ChildItem cmdlet foi projetado para funcionar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis em sua sessão, digite Get-PSProvider. Para obter mais informações, consulte about_Providers.