Hallo Zusammen,
ich möchte mittels einem PS Skript AD Benutzerkonten geregelt terminieren.
Hierzu habe eine PS-Skript Function erstellt, die mit einem Parameter -AccountToTerminate 'SamAccountName' gestartet werden soll.
Innerhalb des Skripts sollen zum AD-Object und seinen Funktionen wichtige Informationen in "eine" CSV-Datei zum entsprechenden Job (Job-ID) ablegt werden.
Einzelne Attributen und Werten stellen kein Problem dar, jedoch stoße ich bei der Verarbeitung von String-Arrays oder Typ "System.Array" immer wieder auf Probleme, was auch an meinem Verständnis liegen mag. :-(
Ich möchte für den ausgewählten Benutzer, eine CSV-Tabelle erstellen, mit Spalten:
DisplayName, SamAccountName, SID, etc.
sowie z.B. eine Spalte für die aktuellen Gruppenmitgliedschaften
MemberOf, MemberOfSID
oder die benutzen ActiveSync Geräte:
MobileDevices, etc.
Folgender Code (nur Teile) nutze ich zum sammeln der Informationen und dem Export ($efile):
CODE:
# Auswahl SamAccountName
$AccountToTerminate = 'mustermann.max'
# Auslesen AD-Attribute und Funktionen
$ADUser = Get-ADUser -Identity $AccountToTerminate -Property * | Sort-Object
$UserMemberOf = Get-ADPrincipalGroupMembership -Identity $AccountToTerminate | Select-Object SamAccountName, SID
IF ($ADUser.'msExchMailboxGuid' -eq $Null){
[String]$UserMailboxEnabled = "Disabled"
[String]$UserEmailAddress = "NotSet"
}
ELSE {
[String]$UserMailboxEnabled = "Enabled"
[String]$UserEmailAddress = $ADUser.'mail'
$UserMailbox = Get-Mailbox $AccountToTerminate
$UserCASMailbox = Get-CASMailbox $AccountToTerminate
$UserMobileDevices = Get-MobileDeviceStatistics -Mailbox $AccountToTerminate
}
# Ergebnisse zusammenbauen
[Array]$Result = @()
$Object = New-Object PSObject
Add-Member -InputObject $Object -memberType NoteProperty -Name DisplayName -Value $ADUser.'DisplayName'
Add-Member -InputObject $Object -memberType NoteProperty -Name SamAccountName -Value $ADUser.'SamAccountName'
Add-Member -InputObject $Object -memberType NoteProperty -Name SID -Value $ADUser.'objectSID'.Value
Add-Member -InputObject $Object -memberType NoteProperty -Name MailboxEnabled -Value $UserMailboxEnabled
Add-Member -InputObject $Object -memberType NoteProperty -Name EmailAddress -Value $UserEmailAddress
#
Add-Member -InputObject $Object -memberType NoteProperty -Name MemberOf -Value $UserMemberOf.SamAccountName
Add-Member -InputObject $Object -memberType NoteProperty -Name MemberOfSID -Value $UserMemberOf.SID.Value
$Result += $Object
# Ergebnisse in eine CSV Datei exportieren und diese öffnen
$Result | Export-Csv -Path $efile -Delimiter ";" -Encoding UTF8 -NoTypeInformation -ErrorAction $ErrorActionPreference& $efile
Nun die Frage!
1. Wie bekommt man es hin, die Mehrfach Werte (wie zum Beispiel 'MemberOf' oder 'MemberOfSID' in NUR eine "Spalte 'MemberOfSID'" in das $Result Array zu bringen und auch zu exportieren?
Also zum Benutzer und seine Werte NUR eine Spalte "MemberOf" und darunter alle Gruppenmitgliedschaften?
Jeder Ansatz von mir, mit Schleifen oder 'System.Collections.ArrayList' führten zu keinem Ergbenis.
Der direkte CSV-Export der Variable '$UserMemberOf' in eine weitere Datei stellt kein Problem dar!?
Möchte jedoch zum Vorgang (Job-ID) nur eine Datei erstellen...
Vielen Dank im Voraus für jede Art der Zusammenarbeit.
Manfred Schüler