jueves, 26 de septiembre de 2013

Función Powershell "buscar cadena" en un fichero

En mi día a día como administrador de sistemas, he necesitado muchas veces buscar cadenas de texto dentro de ficheros .txt, pues bien automatizar este proceso en Powershell me ha facilitado mucho la tarea en cuestión.


La función en cuestión es la siguiente:

function buscarCadena([String]$cadena , [String]$file) {

    # Se verifica que el fichero existe y la cadena no es nula
    if ((Test-Path -Path $file) -and $cadena) {
        $list = Get-Content $file
        # Si se encuentra la cadena se devuelve true
        if ($list -match $cadena) {
            return $true
           
        }
    }
    # Se devuelve false si no encuentra nada o el fichero no existe
    return $false
 
}

Esta función la podremos incorporar a nuestros scripts y así poder usar las cadenas encontradas en nuestro fichero de texto para realizar otras tareas. Os ilustraré con un pequeño ejemplo de un fichero de texto con nombres de usuario en el que buscaremos un nombre X y lo mostraremos en pantalla si se encuentra en el fichero de texto.


Fichero de texto para el ejemplo ubicado en C:\temp\ejemplo.txt

adri_1
jonathan
ejemplo

Código de ejemplo:
function buscarCadena([String]$cadena , [String]$file) {

    # Se verifica que el fichero existe y la cadena no es nula
    if ((Test-Path -Path $file) -and $cadena) {
        $list = Get-Content $file
        # Si se encuentra la cadena se devuelve true
        if ($list -match $cadena) {
            return $true
           
        }
    }
    # Se devuelve false si no encuentra nada o el fichero no existe
    return $false
 
}

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null 

#capturamos el nombre a buscar en el fichero de ejemplo
$nom= [Microsoft.VisualBasic.Interaction]::InputBox("Introduce el nombre a buscar: ")


#almacenamos el fichero en una variable
$fichero = "c:\temp\ejemplo.txt"

#ejecutamos la función con los parametros capturados
$resultado=buscarcadena $nom $fichero


#Mostramos por pantalla el resultado siendo True o False
Write-Host "Fichero encontrado = $resultado"

Bueno, y hasta aquí esta sencilla función aplicada en un pequeño script de búsqueda de usuarios en un fichero de texto.

Espero que os haya sido de gran ayuda ;)


No hay comentarios:

Publicar un comentario

Google+ Google+