Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo só se aplica às plataformas Windows.
O PowerShell usa o substantivo Item para referir-se aos itens encontrados em uma unidade de PowerShell. Ao lidar com o provedor do PowerShell FileSystem, um Item pode ser um arquivo, uma pasta ou uma unidade do PowerShell. Listar e trabalhar com esses itens é uma tarefa básica crítica na maioria das configurações administrativas, portanto, queremos discutir essas tarefas em detalhes.
Enumerando arquivos, pastas e chaves do Registro
Como obter uma coleção de itens de um local específico é uma tarefa tão comum, o Get-ChildItem
cmdlet foi projetado especificamente para retornar todos os itens encontrados em um contêiner, como uma pasta.
Se você quiser retornar todos os arquivos e pastas contidos diretamente na pasta C:\Windows
, digite:
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2006-05-16 8:10 AM 0 0.log
-a--- 2005-11-29 3:16 PM 97 acc1.txt
-a--- 2005-10-23 11:21 PM 3848 actsetup.log
...
A listagem é semelhante ao que você veria ao inserir o comando dir
em cmd.exe
, ou o comando ls
em um shell de comando Unix.
Você pode executar listagens complexas usando parâmetros do Get-ChildItem
cmdlet. Você pode ver a sintaxe do Get-ChildItem
cmdlet digitando:
Get-Command -Name Get-ChildItem -Syntax
Esses parâmetros podem ser combinados para obter uma saída altamente personalizada.
Listando todos os itens contidos
Para ver os itens dentro de uma pasta do Windows e quaisquer itens contidos nas subpastas, use o parâmetro Recurse de Get-ChildItem
. A listagem exibe tudo dentro da pasta do Windows e os itens em suas subpastas. Por exemplo:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 1852416 AcGenral.dll
...
Filtrando itens por nome
Para exibir apenas os nomes dos itens, use o parâmetro Name de Get-ChildItem
:
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Listar itens ocultos à força
Itens que estão ocultos no Explorador de Arquivos ou cmd.exe
não são exibidos na saída de um comando Get-ChildItem
. Para exibir itens ocultos, use o parâmetro Force de Get-ChildItem
.
Por exemplo:
Get-ChildItem -Path C:\Windows -Force
Esse parâmetro é denominado Force porque você pode substituir à força o comportamento normal do Get-ChildItem
comando. Force é um parâmetro amplamente usado que força uma ação que um cmdlet normalmente não executaria, embora não possa executar nenhuma ação que comprometa a segurança do sistema.
Corresponder nomes de itens com curingas
O comando Get-ChildItem
aceita curingas no caminho dos itens a serem listados.
Como a correspondência de curingas é identificada pelo mecanismo do PowerShell, todos os cmdlets que aceitam curingas usam a mesma notação e têm o mesmo comportamento de correspondência. A notação de curinga do PowerShell inclui:
- O Asterisco (
*
) corresponde a zero ou mais ocorrências de qualquer caractere. - O ponto de interrogação (
?
) corresponde exatamente a um caractere. - O caractere de colchete esquerdo (
[
) e o caractere de colchete direito (]
) envolvem um conjunto de caracteres a serem comparados.
Aqui estão alguns exemplos de como a especificação de curinga funciona.
Para localizar todos os arquivos no diretório do Windows com o sufixo .log
e exatamente cinco caracteres no nome base, insira o seguinte comando:
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
...
-a--- 2006-05-11 6:31 PM 204276 ocgen.log
-a--- 2006-05-11 6:31 PM 22365 ocmsn.log
...
-a--- 2005-11-11 4:55 AM 64 setup.log
-a--- 2005-12-15 2:24 PM 17719 VxSDM.log
...
Para localizar todos os arquivos que começam com a letra x
no diretório do Windows, digite:
Get-ChildItem -Path C:\Windows\x*
Para localizar todos os arquivos cujos nomes começam com "x" ou "z", digite:
Get-ChildItem -Path C:\Windows\[xz]*
Para obter mais informações sobre curingas, confira about_Wildcards.
Excluir itens
Você pode excluir itens específicos usando o parâmetro Exclude de Get-ChildItem
. Isso permite que você execute filtragem complexa em uma única instrução.
Por exemplo, suponha que você esteja tentando encontrar a DLL do Serviço de Tempo do Windows na pasta System32 , e tudo o que você pode lembrar sobre o nome da DLL é que ela começa com "W" e tem "32" nela.
Uma expressão como w*32*.dll
encontrará todas as DLLs que atendem às condições, mas talvez você queira filtrar ainda mais os arquivos e omitir todos os arquivos win32. Você pode omitir esses arquivos usando o parâmetro Excluir com o padrão 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
Mesclar parâmetros do Get-ChildItem
Você pode usar vários dos parâmetros do Get-ChildItem
cmdlet no mesmo comando. Antes de mesclar parâmetros, certifique-se de que você compreende a correspondência de curingas. Por exemplo, o comando a seguir não retorna resultados:
Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
Não há resultados, embora haja duas DLLs que começam com a letra "z" na pasta do Windows.
Nenhum resultado foi retornado, pois especificamos o curinga como parte do caminho. Embora o comando tenha sido recursivo, o Get-ChildItem
cmdlet restringiu os itens àqueles que estão na pasta do Windows com nomes que terminam com .dll
.
Para especificar uma pesquisa recursiva para arquivos cujos nomes correspondem a um padrão especial, use o parâmetro Include.
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll