elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Powershell duda!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Powershell duda!  (Leído 2,682 veces)
Ur1cchio

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Powershell duda!
« en: 2 Septiembre 2015, 22:45 pm »

Hola que tal! Hace poco empece a usar powershell, y he estado trabado sobre este ejercicio bastante tiempo

-----------------------------------------------------------------------------------------------
Un sistema realiza un backup de su base de datos en un archivo de texto plano con el siguiente formato:

Campo1=Valor1
Campo2=Valor2
Campo3=Valor3
***
Campo1=Valor4
Campo2=Valor5
Campo3=Valor6

Cada línea contiene el valor de un campo para un registro. Cada registro se encuentra separado del otro por 3 asteriscos.
Se necesita crear un script que lea el archivo de backup y genere un archivo CSV para poder procesarlo más fácilmente. La primer fila del archivo CSV contener los nombres de los campos, y en las filas siguientes estarán los valores de los mismos.

Obligatoriamente necesito usar el cmd Export-Csv

----------------------------------------------------------------------------------------------

Claramente no puedo agarrar directamente el archivo de texto y exportarlo a CSV.
Mi problema es tratar de leer el archivo de txt y empezar a darle forma de tabla o algo asi.

He intentado creando una tabla, pero se me complica demasiado agregar los datos a cada columna, ya que este tipo de estructura solamente me deja referenciar a una colmna solo por su nombre, y no por algun tipo de indice o algo.
Ayuda porfavor, algun consejo o tip, no quiero que me hagan el ejercicio

Desde ya muchas gracias
Saludos cordiales


En línea

Ur1cchio

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Powershell duda!
« Respuesta #1 en: 3 Septiembre 2015, 03:37 am »

Al final logre resolver el problema, o casi todo! faltan unos pequeños detalles nomas...
Lo subo por si algún día en el futuro alguien lo necesita

Citar
Param(
    [Parameter( Position = 1, Mandatory = $true )][String]$pathEntrada = ( Read-Host "Ingrese path de entrada " ),
    [Parameter( Position = 2, Mandatory = $false )][String]$pathSalida = ( Read-Host "Ingrese path de salida " )
)

$tabla = New-Object System.Data.DataTable "tabla"
$contenido = Get-Content $pathEntrada#

#creamos las columnas
#A las columnas les pongo el nombre que les corresponde con $linea[0]
$i = 0
while(  !$contenido[$i].Contains("***")  ){
    $linea = ($contenido[$i]).Split("=")
    write-host "contiene" + $linea[0]
    $col = New-Object system.Data.DataColumn $linea[0],([String])
    $tabla.Columns.Add($col)
    $i++
}

#en la variable i vamos a tener la cantidad de columnas
#empezamos a buscar los registros
$j = 0
foreach( $linea2 in $contenido ){
    #Si encuentro un *** y j = 0 entonces creo una nueva fila
    if(($j -eq 0) ){
        write-host "se creo la fila "
        $row = $tabla.NewRow()
       
    }
    # si j es menor que la cantidad de columnas o igual
    #agrego a esa fila en la columna $linea2[0] el valor $linea2[1]
    if( $j -lt $i ){
        $j++
        $linea2 = $linea2.Split("=")
        write-host $linea2[0]
        $row.($linea2[0]) = $linea2[1]
    #una vez que j = a la cantidad de columnas es por que complete
    #todas las columnas, por lo tanto agregamos la fila a la tabla
    #e inicializamos nuevamente J
    }else{
        $tabla.Rows.Add($row)
        $j = 0
    }
}



$tabla | Export-csv -Path $pathSalida


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PowerShell] WMI Query Language (eBook)
Scripting
Novlucker 0 3,466 Último mensaje 28 Abril 2011, 21:40 pm
por Novlucker
¿PowerShell o MSDos?
Scripting
HIRONAKAMURA 2 3,415 Último mensaje 24 Septiembre 2012, 03:42 am
por HIRONAKAMURA
Resolucion de IP y DNS - Powershell
Scripting
efer27 1 3,158 Último mensaje 4 Abril 2013, 16:51 pm
por efer27
Añadir IP y MAC estática con Powershell
Windows
gregory90 0 1,907 Último mensaje 17 Mayo 2016, 22:33 pm
por gregory90
PowerShell pregunta
Windows
rdzlcs 2 2,461 Último mensaje 11 Julio 2016, 20:56 pm
por rdzlcs
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines