¿Cómo exportar propiedades de usuario de AD con PowerShell a un archivo .csv?

¿Cómo exportar propiedades de usuario de AD con PowerShell a un archivo .csv?

Tengo un problema al exportar propiedades de usuario de AD a .csvun archivo que son miembros de un grupo de AD en particular.

este es mi codigo

$ExportPath= "C:\Users\group_list.csv"
$groupname = "group1"
$users = Get-ADGroupMember -Identity $groupname | ? {$_.objectclass -eq "user"}
foreach ($activeusers in $users) { Get-ADUser -Identity $activeusers | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Format-Table} Export-Csv $ExportPath }

Respuesta1

Simplemente debe asignar $Usersuna variable a la canalización donde selecciona las propiedades deseadas y luego canalizarla al .csvarchivo.

$ExportPath = "C:\Users\group_list.csv"
$GroupName = "group1"
$Users = Get-ADGroupMember -Identity $GroupName | ? {$_.objectclass -eq "user"}

$Users | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Export-Csv $ExportPath

Respuesta2

Tienes problemas de sintaxis con lo que publicaste.

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeusers in $users) 
{ 
    Get-ADUser -Identity $activeusers | 
    Where-Object {
    $_.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Format-Table
} Export-Csv $ExportPath 

Una refactorización rápida de su código publicado.

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeuser -in $users) 
{ 
    Get-ADUser -Identity $activeuser | 
    Where-Object {
    $PSItem.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Export-Csv $ExportPath  -NoTypeInformation -Append
} 

Lo que proporcionó 'Zoran Jankov' es más directo/menos código, pero asegúrese de agregar '-NoTypeInformation' o terminará con texto adicional en su salida que no querrá.

Para tu información...

Utilice las herramientas proporcionadas por MS para escribir el código de referencia y utilícelo tal como está o modifíquelo según sea necesario.

Los alias utilizados en los scripts de PowerShell no deben usarse, aunque están bien para código interactivo/desechable, que es su propósito. Si los utiliza en su esfuerzo de desarrollo, asegúrese de expandirlos todos antes de publicarlos o compartirlos. Este es el por qué:

  1. Si abre este código en VSCode, cualquier alias se considerará un error hasta que lo expanda.
  2. Si ejecuta PSScriptAnalyzer en él, también los señalará como errores.

Mejores prácticas para utilizar alias en scripts de PowerShell

¿Por qué preocuparse por los alias en primer lugar?

¿Cuál es el problema con el uso de alias de todos modos? Si hacen que el código sea más fácil de escribir, ¿qué daño hay en usarlos en scripts? Hay dos cosas en juego cuando se trata de un guión.La primera es que no se garantiza que exista ningún alias, ni siquiera los alias creados por Windows PowerShell.

Uso de PSScriptAnalyzer para verificar el código de PowerShell para conocer las mejores prácticas

información relacionada