es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar filas personalizadas a un archivo CSV desde otros archivos CSV.

function Agregar-Al-CSV($nombreArchivo,$resultado,$accion,$palabraClave,$nombreVideo) 
  {
    $PROGRAMA = (Import-Csv $env:USERPROFILE\Desktop\LISTADEARCHIVOSAREMOVER.csv).PROGRAMASAGREGADOS
    $TIPO = (Import-Csv $env:USERPROFILE\Desktop\LISTADEARCHIVOSAREMOVER.csv).TIPO
    $ACCION = (Import-Csv $env:USERPROFILE\Desktop\LISTADEARCHIVOSAREMOVER.csv).ACCION
    $nuevaFila = "$resultado-,$TIPO-,$ACCION-,$PROGRAMA-,$palabraClave-,$texto"
    Agregar-Contenido $nombreArchivo $nuevaFila
  }

Import-Csv -Path $env:USERPROFILE\Desktop\EQUIPOSQUEQUIERES1.csv | Para-CadaObjeto {
  $miNombreArchivo = "$Busqueda-Texto\SW Todos 1de1 Normal1.csv"
  Agregar-Al-CSV $miNombreArchivo $_.LISTAPC
}

Necesito agregar software para cada equipo en mi lista.
Bajo el archivo EQUIPOSQUEQUIERES1.CSV tengo la lista de equipos.
Bajo el archivo LISTADEARCHIVOSAREMOVER.CSV tengo el encabezado en donde tengo los nombres de los equipos que quiero incluir para cada computadora.
$BusquedaTexto = Read-Host Prompt ‘ESCRIBE LA RUTA DONDE SE ENCUENTRA EL ARCHIVO’

Esto es lo que obtengo:

Cuenta , Tipo , Acción , Software
PC1, Estación de trabajo , Dell , Soft1 Soft2
PC2, Estación de trabajo , Dell , Soft1 Soft2

Y esto es lo que necesito:

Cuenta , Tipo , Acción , Software
PC1, Estación de trabajo , Dell , Soft1
PC1, Estación de trabajo , Dell , Soft2
PC2, Estación de trabajo , Dell , Soft1
PC2, Estación de trabajo , Dell , Soft2

“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, puedes modificar la función Add-To-CSV para dividir la cadena de software en nombres de software separados y agregar una fila separada para cada nombre de software. Aquí tienes una versión actualizada de la función Add-To-CSV:

    function Add-To-CSV($filename, $account, $type, $action, $software) 
    {  
        foreach ($sw in $software.Split(' ')) {
            $newRow = [pscustomobject]@{
                Account = $account
                Type = $type
                Action = $action
                Software = $sw.Trim()
            }
            $newRow | Export-Csv $filename -Append -NoTypeInformation
        }
    }
    
    $SearchText = Read-Host Prompt 'ESCRIBE LA RUTA DONDE SE ENCUENTRA EL ARCHIVO'
    
    Import-Csv -Path "$SearchText\LISTOFFILESTOREMOVE.csv" | ForEach-Object {
        $myFileName = "$SearchText\SW All 1of1 Normal1.csv"
        Add-To-CSV $myFileName $_.Account $_.Type $_.Action $_.Software
    }
    

    En la función actualizada, utilizamos un bucle foreach para iterar sobre cada nombre de software en la cadena $software, la cual dividimos utilizando el carácter espacio como delimitador. Luego creamos un nuevo objeto con propiedades para la cuenta, el tipo, la acción y el nombre del software, y lo exportamos al archivo CSV utilizando Export-Csv con los parámetros -Append y -NoTypeInformation. Finalmente, llamamos a la función Add-To-CSV actualizada con los valores de cuenta, tipo, acción y software de cada fila del archivo LISTOFFILESTOREMOVE.csv.

Comments are closed.