Wie exportiere ich AD-Benutzereigenschaften mit PowerShell in eine CSV-Datei?

Wie exportiere ich AD-Benutzereigenschaften mit PowerShell in eine CSV-Datei?

Ich habe ein Problem beim Exportieren von AD-Benutzereigenschaften in .csveine Datei, die Mitglieder einer bestimmten AD-Gruppe sind.

Das ist mein Code

$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 }

Antwort1

Sie sollten $Usersder Pipeline einfach die Variable übergeben, in der Sie die gewünschten Eigenschaften auswählen, und sie dann in .csveine Datei weiterleiten.

$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

Antwort2

Sie haben Syntaxprobleme mit dem, was Sie gepostet haben

$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 

Eine schnelle Umgestaltung Ihres geposteten Codes.

$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
} 

Der von „Zoran Jankov“ bereitgestellte Code ist direkter/weniger, aber fügen Sie unbedingt „-NoTypeInformation“ hinzu, sonst erhält Ihre Ausgabe zusätzlichen Text, den Sie nicht möchten.

Zu Ihrer Information …

Verwenden Sie die von MS bereitgestellten Tools, um Basiscode für Sie zu schreiben und ihn unverändert zu verwenden oder nach Bedarf zu optimieren.

Alias, die in PowerShell-Skripts verwendet werden, sollten nicht verwendet werden, obwohl sie für interaktiven/Wegwerfcode geeignet sind, was ja auch ihr Zweck ist. Wenn Sie sie in Ihrer Entwicklungsarbeit verwenden, müssen Sie sie alle erweitern, bevor Sie sie veröffentlichen oder freigeben. Hier ist der Grund:

  1. Wenn Sie diesen Code in VSCode öffnen, wird jeder Alias ​​als Fehler ausgegeben, bis Sie ihn erweitern.
  2. Wenn Sie PSScriptAnalyzer dagegen ausführen, wird es sie ebenfalls als Fehler melden.

Best Practice für die Verwendung von Aliasnamen in PowerShell-Skripten

Warum sollte man sich überhaupt Gedanken über Aliase machen?

Was ist überhaupt so schlimm daran, Aliase zu verwenden? Wenn sie das Eintippen des Codes erleichtern, was spricht dann dagegen, sie in Skripten zu verwenden? Bei Skripten spielen zwei Dinge eine Rolle.Erstens kann die Existenz eines Alias ​​nicht garantiert werden – auch nicht bei Aliasen, die von Windows PowerShell erstellt wurden.

Verwenden von PSScriptAnalyzer zum Überprüfen Ihres PowerShell-Codes auf Best Practices

verwandte Informationen