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

Printed on: April 25, 2024 at 13:04 o'clock

Member: colinardo
Solution colinardo Aug 28, 2018 updated at 09:05:14 (UTC)
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
Member: ThunderbirdO
ThunderbirdO Aug 28, 2018 at 09:11:56 (UTC)
Goto Top
Vielen vielen Dank, jetzt funktioniert es einwandfrei!

Wünsche dir noch einen entspannten Tag.

Grüße
ThunderbirdO
Member: colinardo
colinardo Aug 28, 2018 updated at 09:31:24 (UTC)
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.