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-ID: 2800768550

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

Ausgedruckt am: 05.11.2024 um 04:11 Uhr

MrCount
MrCount 16.05.2022 aktualisiert um 16:06:43 Uhr
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...
ukulele-7
ukulele-7 16.05.2022 um 16:07:31 Uhr
Goto Top
Ich tippe auf Schreibfehler im Dateinamen der CSV. Du hast hier schon zwei falsche Varianten von "Displayname" eingebaut.
MrCount
MrCount 16.05.2022 um 16:10:32 Uhr
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
Nagus
Nagus 16.05.2022 aktualisiert um 16:27:59 Uhr
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
}
SlainteMhath
SlainteMhath 16.05.2022 um 16:32:58 Uhr
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
colinardo
Lösung colinardo 16.05.2022 aktualisiert um 16:47:25 Uhr
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
Nagus
Nagus 16.05.2022 um 17:07:58 Uhr
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
Nagus
Nagus 16.05.2022 um 17:11:11 Uhr
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