nagus
Goto Top

Powershell suche nach displayname funktioniert im Skript nicht

Hi zusammen,

bin gerade ein wenig am verzweifeln:

ich habe eine Liste mit Usern (Dispylaname) die ich als CSV in powershell einlese. Anschließend erweitere ich die um ein weiteres Feld, die Email Adresse.

Dann möchte ich über den Displaynamen die Emailadresse auslesen. Klappt auch problemlos, wenn ich das direkt in der Konsole für einen Benutzer mache, im Skript bekomme ich nur Fehler.

Die Userliste liegt in $Userliste und hat die folgende Struktur:


get-aduser -properties * -filter {Displayname -eq "Benutzername"} | select Userprincipalname  

foreach ($u in $userlist)
{
    get-aduser -properties * -filter {Displayname -eq $u.user} | select Userprincipalname
    $u.Email = $email.emailaddress 
}

Content-Key: 2800768550

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

Printed on: April 26, 2024 at 23:04 o'clock

Member: MrCount
MrCount May 16, 2022 updated at 14:06:43 (UTC)
Goto Top
Servus,

Zitat von @Nagus:

im Skript bekomme ich nur Fehler.

die da wären??

Mal davon abgesehen, dass man nicht weiß, wie deine CSV aussieht...
Member: ukulele-7
ukulele-7 May 16, 2022 at 14:07:31 (UTC)
Goto Top
Ich tippe auf Schreibfehler im Dateinamen der CSV. Du hast hier schon zwei falsche Varianten von "Displayname" eingebaut.
Member: MrCount
MrCount May 16, 2022 at 14:10:32 (UTC)
Goto Top
Zitat von @ukulele-7:

Ich tippe auf Schreibfehler im Dateinamen der CSV. Du hast hier schon zwei falsche Varianten von "Displayname" eingebaut.

... das wäre mein nächster Tipp gewesen... face-wink
Member: Nagus
Nagus May 16, 2022 updated at 14:27:59 (UTC)
Goto Top
Sorry, habe den Beitrag etwas zu früh abgeschickt und kann ihn nicht mehr editieren: daher hier noch einmal alles:

Hi zusammen,

bin gerade ein wenig am verzweifeln:

ich habe eine Liste mit Usern (Dispylaname) die ich als CSV in PowerShell einlese. Anschließend erweitere ich die um ein weiteres Feld, die Email Adresse.

Dann möchte ich über den Displaynamen die Emailadresse auslesen. Klappt auch problemlos, wenn ich das direkt in der Konsole für einen Benutzer mache, im Skript bekomme ich nur Fehler.

Die Userliste liegt in $UserList und hat die folgende Struktur:
user                               email
-------                            --------
Max Mustermann 

get-aduser -properties * -filter {Displayname -eq "Benutzername"} | select Userprincipalname  

$UserList = Import-Csv -Path $datei
$UserList | Add-Member -MemberType NoteProperty -Name 'Email' -Value ""  
foreach ($u in $userlist)
{
    
    $Email = get-aduser -properties * -filter {Displayname -eq $u.user} | select Userprincipalname
    $u.email = $Email.userprincipalname
}
Member: SlainteMhath
SlainteMhath May 16, 2022 at 14:32:58 (UTC)
Goto Top
Moin,

Der Filter muss mMn in Anführungszeichen stehen. Als in deinem Fall etwas
.... -filter ("Displayname -like '{0}'" -f $u.user)  

lg,
Slainte

PS: Du solltest uns noch die Fehlermeldung mitteilen face-smile
Member: colinardo
Solution colinardo May 16, 2022 updated at 14:47:25 (UTC)
Goto Top
Servus.
Die Filter mit Get-ADUser sind da etwas eigenwillig besonders bei Variablen und Verwendung der {} Filter-Variante mit Properties einer Variablen, weil die Klammern einen eigenen Variable-Kontext aufmachen.
Dein Vorhaben reduzierst du hiermit auf einen Einzeiler:
Import-Csv -Path $datei | select user,@{n='email';e={Get-ADUser -Filter "DisplayName -eq '$($_.user)'" -Properties EmailAddress | select -Expand EMailAddress}}  
Was du dann bei Bedarf direkt wieder an Export-CSV pipen kannst.

Grüße Uwe
Member: Nagus
Nagus May 16, 2022 at 15:07:58 (UTC)
Goto Top
Okay, die Lösung von Colinardo funktioniert - wobei ich sie noch nicht verstehe ...


Zitat von @SlainteMhath:

Moin,

Der Filter muss mMn in Anführungszeichen stehen. Als in deinem Fall etwas
.... -filter ("Displayname -like '{0}'" -f $u.user)  

lg,
Slainte

PS: Du solltest uns noch die Fehlermeldung mitteilen face-smile
Nur der Vollständigkeit halber die fehlermeldung:

displayname : Die Benennung "displayname" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad
korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In D:\Useranlage_Entwicklung\test.ps1:23 Zeichen:40
$Email = get-aduser -properties * (displayname -like $u.user) | s ...
~~~~~~~~~~~
CategoryInfo : ObjectNotFound: (displayname:String) , CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException
Member: Nagus
Nagus May 16, 2022 at 15:11:11 (UTC)
Goto Top
Zitat von @colinardo:

Servus.
Die Filter mit Get-ADUser sind da etwas eigenwillig besonders bei Variablen und Verwendung der {} Filter-Variante mit Properties einer Variablen, weil die Klammern einen eigenen Variable-Kontext aufmachen.
Dein Vorhaben reduzierst du hiermit auf einen Einzeiler:
Import-Csv -Path $datei | select user,@{n='email';e={Get-ADUser -Filter "DisplayName -eq '$($_.user)'" -Properties EmailAddress | select -Expand EMailAddress}}  
Was du dann bei Bedarf direkt wieder an Export-CSV pipen kannst.

Grüße Uwe

Die Lösung ist genial! Danke!
Da brauche ich noch ein paar Jahre .... Oo