pixel0815
Goto Top

Powershell Variable mit einem Operator versehen

Moin, ich hab da ein Problem.

Das Script funtioniert ansich wunderbar, aber der SamAccountName aus der DEST Domäne (trust etc vorhanden, alles kein Problem) würde ich gerne mit einem -like versehen.
Es ist so das ein SamAccountName in der Quelldomäne test.benutzer heißen kann, allerdings durch ein automatismus in der Remotdomäne test.benutzer-11.
Wenn der SamAccountName in Quell und Source gleich ist, dann wird der logischerweise korrekt in die Variable geschrieben, wennn sich dieser aber noch in der Remote Domäne anders lautet mit einem Suffix, dann bleibt das Feld leer. Das möchte ich nicht.

Wie bekomem ich das mit diesem Parameter hin? -> -SamAccountName ($Member.samaccountname)

Ich habe schon einiges Versucht aber in der Ausgabe bleibt er leer.

Gruß
Pixel

$destinationinfo= Get-QADUser -SearchRoot "DC=blabla,DC=blabla"  -SamAccountName ($Member.samaccountname) –SerializeValues –DontUseDefaultIncludedProperties -IncludedProperties Name,SamAccountName,Postalcode,l,Mail,extensionAttribute1,useraccountcontrol | select Name,SamAccountName,Postalcode,l,Mail,extensionAttribute1,useraccountcontrol  


Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "Eine-AD-Gruppe"} | select name -expandproperty name)  
$Table = @()

$Record = [ordered]@{
"Gruppenname" = ""  
"Name" = ""  
"Benutzername-SRC" = ""  
"Benutzername-DEST" = ""  
"E-Mail" = ""  
"UAC-SRC" = ""  
"UAC-DEST" = ""  
"Benutzerstatus-SRC" =""  
}

Foreach ($Group in $Groups)

{
$Arrayofmembers = Get-ADGroupMember -identity $Group | get-aduser -properties * |select name,samaccountname,useraccountcontrol,enabled
	Remove-Item ".\$Group-Mailadressen.csv" -ErrorAction SilentlyContinue  
	
foreach ($Member in $Arrayofmembers)

{

$destinationinfo= Get-QADUser -SearchRoot "DC=blabla,DC=blabla"  -SamAccountName ($Member.samaccountname) –SerializeValues –DontUseDefaultIncludedProperties -IncludedProperties Name,SamAccountName,Postalcode,l,Mail,extensionAttribute1,useraccountcontrol | select Name,SamAccountName,Postalcode,l,Mail,extensionAttribute1,useraccountcontrol  

$Record."Gruppenname" = $Group  
$Record."Name" = $Member.name  
$Record."Benutzername-SRC" = $Member.samaccountname  
$Record."Benutzername-DEST" = $destinationinfo.samaccountname  
$Record."E-Mail" = $destinationinfo.mail  
$Record."UAC-SRC"=$Member.useraccountcontrol  
$Record."UAC-DEST"=$destinationinfo.userAccountControl  
$Record."Benutzerstatus-SRC"=$Member.Enabled  
$objRecord = New-Object PSObject -property $Record
$Table += $objrecord

$destinationinfo | export-csv ".\$Group-rMAIL.csv" -NoTypeInformation -Append -Encoding UNICODE -Delimiter ";"  
}

}

$Table | ft -AutoSize
$Table | export-csv ".\$Group-Alles.csv" -NoTypeInformation -Encoding UNICODE -Delimiter ";"  

Content-ID: 327697

Url: https://administrator.de/forum/powershell-variable-mit-einem-operator-versehen-327697.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

131381
131381 27.01.2017 aktualisiert um 12:17:38 Uhr
Goto Top
Moin.
Du machst ja in Zeile 27 den Fehler das du exakt nach dem SamAccountName der Quelle suchst ... btw. warum nutzt du das Modul Get-QAdUser ?? Das ist doch schon längst obsolet und braucht es schon lange nicht mehr, denn die erweiterten Properties bekommst du auch so...
$destinationinfo = Get-ADUser -Filter * -SearchRoot "DC=blabla,DC=blabla" -Properties Name,SamAccountName,Postalcode,l,Mail,extensionAttribute1,useraccountcontrol | ?{$_.SamAccountName -like "$($member.SamAccountName)*"}  
Gruß mik
pixel0815
pixel0815 27.01.2017 um 13:17:46 Uhr
Goto Top
Das ist ja egal welches Modul ich benutze. Ich benutze es gerne.
Mit get-aduser geht es auch nicht. Die Info welcher SamAccountName kommt wird ja aus den Mitgliedschaften der Gruppe generiert.
Kann ich diese Variable -SamAccountName ($Member.samaccountname) nicht mit einem Like Operator versehen??????
131381
131381 27.01.2017 aktualisiert um 13:23:16 Uhr
Goto Top
Zitat von @pixel0815:
Mit get-aduser geht es auch nicht.
Doch, klar geht das...
Kann ich diese Variable -SamAccountName ($Member.samaccountname) nicht mit einem Like Operator versehen??????
Nein, siehe oben nutze ein Where-Object (?{}) oder den Filter von Get-ADUser
pixel0815
pixel0815 27.01.2017 um 13:37:04 Uhr
Goto Top
Stimmt. Mit deiner Abfrage erhalte ich jetzt zwar Benutzer, aber anstatt ein Benutzer sind es jetzt alle :O
131381
131381 27.01.2017 aktualisiert um 13:39:24 Uhr
Goto Top
Dann hast du den where Filter vergessen ... s.o. geht einwandfrei!

Scheinen noch die Grundlagen zu fehlen, hier lesen:
https://technet.microsoft.com/de-de/library/ee177028.aspx
pixel0815
pixel0815 27.01.2017 um 13:39:37 Uhr
Goto Top
Du meinst den ?{$_.SamAccountName -like "$($member.SamccountName)*"} ?
131381
131381 27.01.2017 aktualisiert um 13:40:39 Uhr
Goto Top
Sicher, schrieb ich doch ?{} ist eine Abkürzung für das where-object.
pixel0815
pixel0815 27.01.2017 um 13:43:04 Uhr
Goto Top
Geht nicht face-sad Da werden alle Benutzer ausgegeben.
131381
Lösung 131381 27.01.2017 aktualisiert um 13:48:58 Uhr
Goto Top
Du meinst den ?{$_.SamAccountName -like "$($member.SamccountName)*"} ?
Öhm schau mal genau hin, du hast einen Schreibfehler da fehlt ein a im Code ...
$member.SamAccountName
Dann ist nämlich klar warum alle gelistet werden face-smile!
pixel0815
pixel0815 27.01.2017 um 14:07:16 Uhr
Goto Top
Stimmt. Hihihi.. Ist zwar super langsam jetzt, aber es funktioniert. Ich danke dir vielmals :o)
131381
131381 27.01.2017 aktualisiert um 14:55:24 Uhr
Goto Top
Zitat von @pixel0815:

Stimmt. Hihihi.. Ist zwar super langsam jetzt, aber es funktioniert. Ich danke dir vielmals :o)
Naja, du kannst das ja auch direkt über den Filter von Get-AdUser machen statt mit where-object wie ich oben schon erwähnte, das ist immer schneller:
$filter = "$($member.SamaccountName)*"  
Get-AdUser -Filter {SamAccountname -like $filter} ......................
Einfach zwischendurch mal hier lesen:
https://technet.microsoft.com/en-us/library/ee617241.aspx

Gruß mik