Partilhar via


about_Wildcards

Breve descrição

Descreve como usar caracteres curinga no PowerShell.

Descrição longa

Os caracteres curinga representam um ou vários caracteres. Você pode usá-los para criar padrões de palavras em comandos. As expressões curinga são usadas com o -like operador ou com qualquer parâmetro que aceite curingas.

Por exemplo, para corresponder todos os arquivos no C:\Techdocs diretório com uma extensão de nome de .ppt arquivo, digite:

Get-ChildItem C:\Techdocs\*.ppt

Nesse caso, o caractere curinga asterisco (*) representa todos os caracteres que aparecem antes da extensão de nome de .ppt arquivo.

As expressões curinga são mais simples do que as expressões regulares. Para obter mais informações, consulte about_Regular_Expressions.

O PowerShell oferece suporte aos seguintes caracteres curinga:

  • * - Corresponder zero ou mais caracteres
    • a* correspondências aA, age Apple
    • a* não corresponde banana
  • ? - Para strings, corresponda a um caractere nessa posição
    • ?n correspondências an, ine on
    • ?n não corresponde ran
  • ? - Para arquivos e diretórios, corresponda a zero ou um caractere nessa posição
    • ?.txt jogos a.txt e b.txt
    • ?.txt não corresponde ab.txt
  • [ ] - Combinar uma variedade de personagens
    • [a-l]ook correspondências book, cooke look
    • [a-l]ook não corresponde took
  • [ ] - Combinar personagens específicos
    • [bc]ook jogos book e cook
    • [bc]ook não corresponde hook
  • `* - Combine qualquer caractere como um literal (não um caractere curinga)
    • 12`*4 Jogos 12*4
    • 12`*4 não corresponde 1234

Você pode incluir vários caracteres curinga no mesmo padrão de palavras. Por exemplo, para localizar arquivos de texto com nomes que começam com as letras de a a l, digite:

Get-ChildItem C:\Techdocs\[a-l]*.txt

Pode haver casos em que você queira corresponder ao caractere literal em vez de tratá-lo como um caractere curinga. Nesses casos, você pode usar o caractere backtick (`) para escapar do caractere curinga para que ele seja comparado usando o valor literal do caractere. Por exemplo, '*hello`?*' corresponde a cadeias de caracteres que contêm "olá?".

Muitos cmdlets aceitam caracteres curinga em valores de parâmetro. O tópico da Ajuda para cada cmdlet descreve quais parâmetros aceitam caracteres curinga. Para parâmetros que aceitam caracteres curinga, seu uso não diferencia maiúsculas de minúsculas.

Você pode usar caracteres curinga em comandos e blocos de script, como para criar um padrão de palavras que representa valores de propriedade. Por exemplo, o comando a seguir obtém serviços nos quais o valor da propriedade ServiceType inclui Interativo.

Get-Service | Where-Object {$_.ServiceType -like "*Interactive*"}

No exemplo a seguir, a if instrução inclui uma condição que usa caracteres curinga para localizar valores de propriedade. Se a Descrição do ponto de restauração incluir o PowerShell, o comando adicionará o valor da propriedade CreationTime do ponto de restauração a um arquivo de log.

$p = Get-ComputerRestorePoint
foreach ($point in $p) {
  if ($point.Description -like "*PowerShell*") {
    Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
  }
}

Escapando de caracteres curinga em nomes de arquivos e diretórios

Nota

A correspondência curinga para itens do sistema de arquivos funciona de forma diferente do que para cadeias de caracteres. Para obter mais informações, consulte a seção Comments do método DirectoryInfo.GetFiles(String, EnumerationOptions ).

Quando você tenta acessar um arquivo ou diretório que contém caracteres curinga o nome, você deve escapar os caracteres curinga. Considere os seguintes arquivos:

PS> Get-ChildItem

    Directory: D:\temp\test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           11/3/2025  3:39 PM             41 file[1].txt
-a---           11/3/2025  3:39 PM             41 file[2].txt
-a---           11/3/2025  3:39 PM             41 file[3].txt

Os caracteres de colchete quadrado ([]) são curingas, portanto, devem ser escapados ao tentar obter o arquivo usando um dos cmdlets Item, como Get-Item.

PS> Get-Item file`[1`].txt

No entanto, este exemplo falhou porque o valor do nome do arquivo está vinculado ao parâmetro Path , que oferece suporte a caracteres curinga. Nesse caso, o `[ padrão resolve para plain [, que o parâmetro Path interpreta como um curinga. Há três maneiras de resolver isso:

  • Fuja dos caracteres backtick.

    PS> Get-Item -Path file``[1``].txt
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    
  • Coloque o nome do arquivo entre aspas simples para que os backticks não sejam expandidos antes de serem vinculados ao parâmetro Path .

    PS> Get-Item -Path 'file`[1`].txt'
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    
  • Usar o parâmetro LiteralPath

    PS> Get-Item -LiteralPath file[1].txt
    
        Directory: D:\temp\test
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a---           11/3/2025  3:39 PM             41 file[1].txt
    

Consulte também