
Ich habe ein Problem beim Exportieren von AD-Benutzereigenschaften in .csv
eine 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 $Users
der Pipeline einfach die Variable übergeben, in der Sie die gewünschten Eigenschaften auswählen, und sie dann in .csv
eine 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.
- Active Directory-Verwaltungscenter: Erste Schritte
- Active Directory-Verwaltungscenter
- Windows „Active Directory-Verwaltungscenter“
- Windows „Active Directory-Verwaltungscenter“ „PowerShell-Verlaufsanzeige“
- Einführung in das Active Directory-Verwaltungscenter
- Verwenden des AD-Verwaltungscenters zum Erstellen von PowerShell-Befehlen
- Schritt für Schritt: Verwenden des PowerShell History Viewer in Windows Server 2012 R2
- Erlernen von PowerShell mit dem Active Directory-Verwaltungscenter (PowerShell History Viewer)
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:
- Wenn Sie diesen Code in VSCode öffnen, wird jeder Alias als Fehler ausgegeben, bis Sie ihn erweitern.
- Wenn Sie PSScriptAnalyzer dagegen ausführen, wird es sie ebenfalls als Fehler melden.
Best Practice für die Verwendung von Aliasnamen in PowerShell-Skripten
- https://devblogs.microsoft.com/scripting/best-practice-for-using-aliases-in-powershell-scripts
- https://devblogs.microsoft.com/scripting/using-powershell-aliases-best-practices
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