Jump to content

NicR

Members
  • Gesamte Inhalte

    4
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von NicR

  1. Hallo Ich denke ich kann das nun als gelöst markieren. Folgenden Code habe ich (DANKE, PowerShellAdmin) benutzt: #Konsole bereinigen cls #Arraylist erzeugen $user_list=New-Object System.Collections.ArrayList $user_list_control=New-Object System.Collections.ArrayList #Abfrage Benutzer $users=Get-ADUser -LDAPFilter {(!useraccountcontrol:1.2.840.113556.1.4.803:=2)} -SearchBase "DC=XX,DC=XXX,DC=XXX" -Properties office,proxyaddresses, mail | where-object mail -ne $NULL #Schleife geht durch sämtliche Benutzer foreach($user in $users){ #Varibalen NULLEN $mail_prim_smtp=$NULL $mail_sek_smtp=$NULL $mail_sip=$NULL #Schleife arbeitet die Einträge im Attribut ab (innerhalb Benutzer) foreach($mail in $user.proxyaddresses){ #Eintrag enthält eine Adresse #$Mail #prüft ob eine 2 in einer emailadresse enthalten ist und initiert parameter zum eintrag in kontrollliste IF($mail -match "2"){ $control="1" } #prüft ob es NICHT die primäre Adresse ist IF($mail -notmatch $user.mail){ #prüft ob es eine SMTP Adresse ist IF($mail -match 'smtp:'){ $mail_sek_smtp+=$mail.Substring(5,($mail.Length-5))+'' } } } #Benutzerobjekt erzeugen $user_details = New-Object PSObject -Property @{ user_name=$user.Name #primäre email aus Benutzer ermittelt mail_prim_smtp=$user.mail mail_sek_smtp=$mail_sek_smtp office=$user.Office } #Nutzernamen Anteil vergleichbar machen durch kürzen der Domain $user_sek_email_name=$mail_sek_smtp.replace("@SEK_DOMAIN.com","") $user_prim_email_name=$user.mail.replace("@PRI_DOMAIN.com","") #Benutzerobjekt Arraylist hinzufügen, wenn prim und sek Adresse ungleich if( $user_sek_email_name -ne $user_prim_email_name) { $user_list+=$user_details } #Ausgabe wenn Kontrollparameter control =1 IF($control -eq "1"){ $user_list_control+=$user_details $control="0" } } #Ausgabe kontrolliste $user_list_control | Select-Object office, user_name, mail_prim_smtp, mail_sek_smtp | Sort-Object user_name | Export-Csv -Path c:\powershell\Mailaddress_to_check_control.txt -Append -NoTypeInformation #Ausgabe $user_list | Select-Object office, user_name, mail_prim_smtp, mail_sek_smtp | Sort-Object user_name | Export-Csv -Path c:\powershell\Mailaddress_to_check.txt -Append -NoTypeInformation Für mich habe ich den zusätzlichen Punkt "Wenn Mailadressen eine Ziffer enthält, erzeuge eine weitere Datei" Das heisst hier (bei uns) das ein Benutzer schon "doppelt" existiert. Ich habe mir noch zur Aufgabe gemacht, die "Sekundären Addresses" zu separieren, damit das irgendwie eleganter wird. Aktuell wird das im Output als eine lange Zeile dargestellt, jedoch möchte ich erstmal Feedback geben. Vielen Dank für die Hilfe, ich hoffe ich kann da anderweitig auch mal helfen!
  2. Danke PowerShellAdmin Um eines Voraus zu schicken: Ich selber ordne mich noch bei den Anfängern zur Powershell ein Daher bin mir nicht sicher, ob ich das richtig verstehe: $Arraylist | Select-Object kdnr, lastname, surname | Sort-Object kdnr |Export-CSV $csv_export -encoding unicode -Delimiter ';' -NoTypeInformation Ich habe aber Probleme (oder besser,verstehe es nicht) , die Daten aus dem Attribut "proxyaddresses" zu sortieren. Da kommen ja (bei uns bis zu 6 oder 8) Werte aus einem Attribut, wie oben beschrieben. Die Attribute selbst zu sortieren ist "okay" aber die Werte aus den Attributen ... :confused: Zur Kommetierung: Asche auf mein Haupt. Du hast Recht. Wird gleich umgesetzt. :thumb1: QAD: Es wird oftmals für Anfänger empfohlen, weil es meiner Ansicht hilft , die ersten Schritte erfolgreicher zu machen. Ich habe damit angefangen ein paar kleine Auswertungen zu machen und habe mich über die Vereinfachung mancher Parameter erfreut. (get-qaduser -enabled, Password-dates etc.) Die Anzeige der Variablen im rechten Seitenfenster , sowie die schnellen "Hilfe-ballons" sind für mich sehr hilfreich. Ja, ein Teil des Scriptes ist zusammengesucht, da ich ehrlicherweise dieses Multivalue-Zeugs nicht bearbeitet bekomme! :nene: Einfache Dinge laufen schon "gut" aber ich möchte mich dem Weg zu den anspruchsvolleren Scripten nicht verweigern. Ich finde gefallen an der Powershell und bin wohl zu spät damit angefangen es zu lernen. Wenn du also noch ein Tip für das Sortierungsproblem innerhalb eines Attributes hättest, werde ich mich freuen! Danke
  3. Danke schon einmal Blubb Nach deinem Tip bin ich soweit: $users = Get-QADUser -SearchRoot ‘ou=1stlevel,DC=123,dc=456,dc=3434’ -sizelimit 0 -Properties proxyaddresses | Where-Object {$_.Notes -like "*MBX:STD*" } $maxProxy = $users | %{$_.proxyaddresses.count} | Sort-Object | Select-Object -Last 1 foreach ($u in $users) { $proxyaddress = [ordered]@{} $proxyaddress.Add("User",$u.name) for ($i=0; $i -le $maxProxy; $i++) { $proxyaddress.add("proxyaddress_$i",$u.proxyaddresses[$I]) } #end for [pscustomobject]$proxyAddress | Export-Csv -Path C:\powershell\Mails.csv -delimiter "`t" -NoTypeInformation –Append -Force #$proxyaddress #just to see if it made it this far. Remove-Variable -Name proxyAddress } Bei Output fehlt mir jetzt jedoch das "Office" --> Ich kriege diesen Property nicht eingebaut.. Der Output ist leider noch nicht sortiert, d.h. SIP,SMTP,smtp sind immer noch durcheinander. Hast du da auch noch einen Denkanstoss?
  4. Moin Moin und Hallo Ich möchte aus dem AD folgende Ausgabe (per csv) erstellen: Name,Proxyaddresses --> Sortiert nach OU (oder per AD-Attribut das bei uns gesetzt ist mit "Office") Ich hole mir also die OU´s per Parameter und frage per PowerGUI (von Dell) wie folgt ab Get-QADuser -Searchroot $SITE | where-object {$_.Notes -like "*MBX:STD*" } | Select-Object Office,Name, @{L = "ProxyAddresses"; E = { $_.ProxyAddresses -join ","}} | Export-csv -Path "C:\powershell\Mails.csv" -notypeinformation -Append) $SITE holt sich alle OU´s und das klappt auch. Das Where Object ist dazu da, nur Useraccounts mit gesetzten Mailboxen zu filtern. Die Ausgabe des Select-Object / Export-CSV entspricht aber nicht dem was ich möchte. Die Proxyaddresses sind teilweise falsch sortiert (smtp:xxx.xxx@xxx.de;sip:xxxx.xxxx@xxx.de;SMTP:xxx.xxx@xxx.de) --> Mal steht SIP an erster Stelle, mal hinten, mal in der Mitte. Dadurch ist ein vergleich in Excel mit viel manueller Arbeit verbunden. Hintergrund dieser Aktion: Fusionierung zweier Maildomänen. Es gibt teilweise (durch Namensänderungen etc.) mehr als die Primäre und Sekundäre Mailadresse (xxx.de und yyy.de), so das die sekundäre nicht immer gleich der primären Addresse ist. Max.Mustermann@xxx.de ist/wird zu Max.Mustermann.1@yyy.de. Ich muss also irgendwie die SMTP,smtp,sip sortiert bekommen um diese in Excel vergleichen zu können bzw. als Königsklasse nur Unterschiede der smtp/SMTP namen ausgegeben lassen. Hat jemand einen besseren Lösungsansatz als diesen hier?# Bisherige Ausgabe: "DEU",Max Mustermann","smtp:max.mustermann@xxx.de,sip:max.mustermann@yyy.de,SMTP:max.mustermann@yyy.de" mit den Präfixes smtp/sip/SMTP kann excel ja auch nicht umgehen. Idealerweise sollte es so aussehen damit ich mein Ziel erreicht habe. OFFICE | Name | SMTP | SIP | smtp | weitere mögliche DEU | Max Mustermann | Max.Mustermann | Max.Mustermann |Max.Mustermann | Max.Musterfrau Kurzum. Wie kriege ich die Proxyaddresses separiert und sortiert in Variablen damit man diese mit z.b. Write-Output sauber dargestellt bekommt. $xxxDomain = $yyyDomain = $SIP = Ich hoffe das war nicht zu verwirrend und sage schon einmal danke für etwaige Ideen und erholsames Wochenende Nic
×
×
  • Neu erstellen...