O que podemos fazer quando temos uma pasta cheia de textos e queremos saber se neles tem um determinado termo?
Abrir todos eles e ver um a um!!
Ok, pode não ser eficiente fazer isso manualmente, mas e se escrevermos uma função para fazer isso?
Podemos deixar o computador fazer essa validação e nos retornar onde e em qual arquivo encontrou ele.
Para fazer isso vamos utilizar a função Select-String, com ela podemos localizar textos, passando como parâmetro o arquivo que vamos verificar e o que queremos encontrar.
Como esse retorno pode ficar confuso no terminal, vamos gerar um arquivo na mesma pasta, colocando nele a correlação que encontramos.
function Pesquisar-Termo { | |
param ( | |
[Parameter(Mandatory=$true, HelpMessage="Informe um termo para ser pesquisado")] # Colocamos uma mensagem caso o usuario inicie a funcao sem os parametros | |
[string] $termo, | |
$pasta = (Get-Location).Path # Definimos um valor padrao caso nenhum seja passado, nesse caso, a pasta onde o script foi executado | |
) | |
# Configuracoes | |
Clear-Host | |
Write-Host "Pesquisando $termo" | |
$hash = Get-Date -Format ddMMyy-mmhh | |
# Pega todos os arquivos de uma pasta | |
$arquivos = (Get-ChildItem -Path "$pasta" -File).Name | |
# Verifica o conteudo de cada arquivo | |
foreach ($arquivo in $arquivos) { | |
try { | |
Write-Host "Verificando arquivo: $arquivo" | |
$encontrei = Select-String -Path "$pasta\$arquivo" -Pattern "$termo" | |
Add-Content -Path "$pasta\Encontrar_$termo-$hash.txt" -Value $encontrei | |
} | |
catch { | |
$ErrorMessage = $_.Exception.Message # Recebe o erro | |
Write-Host "Erro: $ErrorMessage" | |
} | |
} | |
# Exibimos o retorno ao finalizar | |
Write-Host "Analise concluida" | |
Write-Host "Disponivel em: $pasta\Encontrar_$termo-$hash.txt" | |
} |
Com algumas modificações, podemos utilizar essa mesma função para analisar LOGs e encontrar erros.
Top comments (0)