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.

Buscar CSV utilizando valores de CSV

Tengo un CSV que tiene dos columnas: Computer (ordenador) y Action (acción). También tengo otro CSV que tiene 3 columnas: Computer Identifier (identificador del ordenador), Serial Number (número de serie) y Device ID (ID del dispositivo).

Quiero tomar el CSV1 y tomar la columna “Computer” y buscar esos valores en el CSV2 y ver si es el identificador del ordenador o el número de serie, y darme el ID del dispositivo coincidente para poder ejecutar otra función con eso.

Entonces, el CSV1 buscará donde el valor del ordenador esté en el CSV2.

Entonces, CSV1:

Computer Action
CB12345 Lock
574638 Unlock

Buscará en el CSV2 donde:

DeviceID CB Number (Número de CB) Serial (Serie)
57687348 CB12345 674Z2X3
34554345 CB65487 474Z2X3
54868323 CB45789 574Z2X3
15593235 CB65976 974Z2X3
37593236 CB35466 074Z2X3

Una vez que encuentre el valor, ya sea un número de CB o un número de serie, tomará su correspondiente ID de dispositivo para que pueda usarlo en otra función.

Esto es lo que tengo hasta ahora, pero no estoy seguro de cómo hacerlo para poder usar ambos CSV:

$yesterday = [datetime]::Today.AddDays(-1).ToString("yyyy-MM-dd")
$date = get-date -Format yyyy-MM-dd
$CB = import-csv -Path "\\Scripts\GAM test\CBs"
$GAM = import-csv -Path "\\Scripts\GAM\CSV\$yesterday-GAMprintCROSbasic.csv"

#foreach ($record in $CB)
#{
#    if ($record.action = "Unlock")
#    {
#        $DeviceID = $record.deviceID
#        $DeviceAsset = $record.asset

#        E:\gam\gam.exe update cros $DeviceID action enable
#        Write-Output "$deviceID is being disabled. $deviceasset"
#        Start-Sleep 10
#    }
#}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, podemos seguir los siguientes pasos:

    1. Importar ambos archivos CSV utilizando el cmdlet Import-Csv y almacenarlos en variables separadas.
    2. Recorrer cada fila en CSV1 y comparar el valor del equipo con las columnas de identificador de equipo y número de serie en CSV2. Si se encuentra una coincidencia, recuperar el ID de dispositivo correspondiente y almacenarlo en una variable.
    3. Utilizar la variable de ID de dispositivo para ejecutar otra función.

    Aquí tienes un ejemplo de código que implementa estos pasos:

    # Importar archivos CSV
    $csv1 = Import-Csv -Path 'ruta\al\csv1.csv'
    $csv2 = Import-Csv -Path 'ruta\al\csv2.csv'
    
    # Recorrer CSV1 y buscar el valor del equipo en CSV2
    foreach ($fila in $csv1) {
        $equipo = $fila.Computer
        $IDDispositivo = ($csv2 | Where-Object {$_.Serial -eq $equipo -or $_.'CB Number' -eq $equipo}).DeviceID
        # Utilizar $IDDispositivo para ejecutar otra función
        if ($fila.Action -eq 'Lock') {
            # Hacer algo si la acción es bloquear
        } elseif ($fila.Action -eq 'Unlock') {
            # Hacer algo si la acción es desbloquear
        }
    }
    

    Este código asume que la columna de identificador de equipo en CSV2 se llama ‘CB Number’ y la columna de número de serie se llama ‘Serial’. Es posible que necesites cambiar los nombres de las columnas si son diferentes en tus archivos CSV. Además, reemplaza los comentarios de marcador de posición por tus llamadas de función reales.

Comments are closed.