thunderbirdo
Goto Top

(Powershell) - If Statement in Expression

Hey,

ich habe hier ein Skript, welches mir benötigte Infos über AD Benutzer in eine CSV Datei exportiert. Das Problem besteht darin, dass einige Nutzer keine Mailadresse besitzen und das zu Problemen mit der Software führt welche die CSV importiert.

Daher war mein Plan eine If Anweisung zu formulieren, welche bei nichtvorhandener Mailadresse eine Pseudoadresse generiert aus Vor-/und Nachname.

$ous = 'OU=Interne Mitarbeiter,OU=xxx,DC=xxx,DC=intern','OU=Interne Mitarbeiter,OU=xxx,DC=xxx,DC=intern','OU=Interne Mitarbeiter,OU=xxx,DC=xxx,DC=intern'  

$ous | ForEach { Get-ADUser -Filter * -SearchBase $_ -property * } | 
select  @{Name='Name';Expression={$_.sn}},  
        @{Name='Vorname';Expression={$_.givenname}},  
        @{Name='Email';Expression={if ($_.mail -notcontains "@") {$_.givenname+'.'+$_.sn+'@xxx.intern'} else {$_.mail}},  
        @{Name='Organisation->Name';Expression = {%{$_.distinguishedname -replace "(CN=)(.*?)(,OU=)(.*?)(,OU=)(.*?),.*",'$6'}}},  
        @{Name='Telefonnummer';Expression={$_.telephonenumber}} |   
Export-CSV -Path "\\xx-server-xxx\c`$\Data Collector\Collector ADUser\ADUser.csv" -NoTypeInformation -encoding UTF8 -Delimiter ";"  

Leider bekomme ich nur die Meldung, dass das Hashliteral unvollständig sei.

Grüße
ThunderbirdO

Content-Key: 384643

Url: https://administrator.de/contentid/384643

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: colinardo
Lösung colinardo 28.08.2018 aktualisiert um 11:05:14 Uhr
Goto Top
Servus @ThunderbirdO , willkommen auf Administrator.de!
Leider bekomme ich nur die Meldung, dass das Hashliteral unvollständig sei.
Zwei Fehler:
  1. In Zeile 6 fehlt ganz hinten vor dem Komma noch eine schließende geschweifte Klammer für die Calculated Property, deswegen auch die passende Fehlermeldung weil die Hashtable @{} eben nicht korrekt abgeschlossen ist.
  2. Der Operator -notcontains ist hier falsch gewählt denn der Vergleicht nicht das Vorkommen einzelne Zeichen in Strings sondern ist für den Vergleich eines Vorkommens eines Eintrags in Arrays, du kannst hier bspw. stattdessen den -notlike oder -notmatch(für Regex) Operator nehmen
 @{Name='Email';Expression={if ($_.mail -notlike "*@*") {$_.givenname + '.' + $_.sn + '@xxx.intern'} else {$_.mail}}}, 
Grüße Uwe
Mitglied: ThunderbirdO
ThunderbirdO 28.08.2018 um 11:11:56 Uhr
Goto Top
Vielen vielen Dank, jetzt funktioniert es einwandfrei!

Wünsche dir noch einen entspannten Tag.

Grüße
ThunderbirdO
Mitglied: colinardo
colinardo 28.08.2018 aktualisiert um 11:31:24 Uhr
Goto Top
Keine Ursache.
Zitat von @ThunderbirdO:
Wünsche dir noch einen entspannten Tag.
Danke gleichfalls, den werde ich bestimmt haben, im Liegestuhl am azur blauen Ozean face-wink.