Verifique se o curinga cobre o caminho no powershell

1

Estou tentando descobrir como testar no PowerShell se um curinga na notação da linha de comando for acionado para um determinado caminho. Para ser claro, eu tenho algo assim:

For ($exception in $Exceptions) {
    For ($path in $ListOfAllItems) {
        If (IsPartOfPath -Wildcard $exception -Path $path) {
            -- do something....
        }
    }
}

O problema que estou tendo é como implementar essa função IsPartOfPath . Eu tentei $path -imatch $wildcard simples, mas não gostei do resultado, pois ele se encaixa na sintaxe RegEx completa. Existe uma maneira extravagante no PS de fazer isso além de escrever todas as verificações de caractere curinga sozinho?

A ideia para resolvê-lo foi obter um caminho de recurso para o qual $path se refere e verificar se $exception se refere ao mesmo recurso. No entanto, não tenho ideia se é possível no PowerShell: /

    
por SOReader 24.12.2016 / 01:04

1 resposta

0

O operador -like é provavelmente o que você procura. Ele não faz nenhuma comparação de expressão regular e funciona com * e ? exatamente como esperado. É insensível a maiúsculas e minúsculas.

Infelizmente, ele possui alguns recursos extras: # corresponde a um número e arranjos com colchetes quadrados como [abc] correspondem a qualquer um dos caracteres dentro dos colchetes. Parece ter a mesma semântica que o filtro Get-ChildItem e o Like um operador>.

Se isso for problemático, você pode escapar dos caracteres curinga indesejados antes de usar -like :

$path -like ($wildcard.Replace('[', '[[]').Replace('#', '[#]'))
    
por 24.12.2016 / 02:59