¿Cómo encuentro un usuario por DisplayName en un archivo CSV dado un DistinguishedName en otro archivo CSV?
Tengo dos archivos CSV con valores separados por tabuladores.
CSV1:
csv
GivenName Surname DisplayName Manager
John Smith John Smith Oliver Twist
CSV2:
csv
SAMAccountName mail DistinguishedName
John Smith johns@example.com CN=John Smith,CN=Users,DC=example,DC=com
Oliver Twist olivert@example.com CN=Oliver Twist,CN=Users,DC=example,DC=com
Lo que quería hacer es comparar el CSV1 con el CSV2 y hacer coincidir el nombre del administrador en la columna “Manager” en el archivo CSV1 con el valor de la columna “DistinguishedName” del CSV2 (es decir, “”CN = Oliver Twist ” “) como en este ejemplo y exportar a un nuevo archivo CSV como este:
csv
SAMAccountName mail Manager
John Smith johns@example.com Oliver Twist
Puede haber cientos de nombres distinguidos en el archivo CSV2 como se menciona y todo lo que quiero es la salida de comparar y hacer coincidir el valor de la columna “DistinguishedName” “”CN = cualquier nombre -y “con la columna “Manager” en CSV1.
Aquí está el script que intenté:
$csv1 = Import-Csv -Path 'C:temp\AD.csv'
$csv2 = Import-Csv -Path 'C:\temp\AD_ExportDN.csv'
$csv3 = foreach ($record in $csv2) {
$matchingRecord = $csv1 | Where-Object { $_.manager -eq $record.manager }
# if your goal is to ONLY export records with a matching email address,
# uncomment the if ($matchingRecord) condition
#if ($matchingRecord) {
$record | Select-Object *, @{Name = 'manager'; Expression = {$matchingRecord.DistinguishedName}}
#}
}
$csv3 | Export-Csv -NoTypeInformation -Force -Path 'C:\temp\mergedforAD2.csv'
davy.ai
Para lograr la salida deseada, es necesario comparar la columna
Manager
en CSV1 con la columnaDistinguishedName
en CSV2 y crear un nuevo archivo CSV con los registros coincidentes. Aquí está el script de PowerShell actualizado:En este script, primero importamos los dos archivos CSV usando el cmdlet
Import-Csv
con el delimitador correcto especificado (-Delimiter "
t”). Luego, recorremos cada registro en CSV1 y extraemos el nombre de
Manager. Luego buscamos un registro coincidente en CSV2 usando el cmdlet
Where-Objecty el operador
-likepara buscar el nombre de
Managerdentro del valor de
DistinguishedName`.Si se encuentra un registro coincidente, creamos un nuevo objeto con las columnas deseadas (
SAMAccountName
,mail
yManager
) y lo agregamos al arreglo$output
. Finalmente, exportamos el arreglo$output
a un nuevo archivo CSV usando el cmdletExport-Csv
con el delimitador correcto y la bandera-NoTypeInformation
.