
Tengo un problema al exportar propiedades de usuario de AD a .csv
un 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 $Users
una variable a la canalización donde selecciona las propiedades deseadas y luego canalizarla al .csv
archivo.
$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.
- Centro administrativo de Active Directory: introducción
- Centro administrativo de Active Directory
- Windows 'Centro administrativo de Active Directory'
- Windows 'Centro administrativo de Active Directory' 'Visor del historial de PowerShell'
- Introducción al Centro administrativo de Active Directory
- Utilice el Centro administrativo de AD para crear comandos de PowerShell
- Paso a paso: utilización del Visor de historial de PowerShell en Windows Server 2012 R2
- Aprender PowerShell con el Centro administrativo de Active Directory (Visor del historial de PowerShell)
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é:
- Si abre este código en VSCode, cualquier alias se considerará un error hasta que lo expanda.
- Si ejecuta PSScriptAnalyzer en él, también los señalará como errores.
Mejores prácticas para utilizar alias en scripts de PowerShell
- https://devblogs.microsoft.com/scripting/best-practice-for-using-aliases-in-powershell-scripts
- https://devblogs.microsoft.com/scripting/using-powershell-aliases-best-practices
¿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