Active Directory: Filterung mithilfe von Powershell
Moin,
aktuell schreibe ich ein Script, welches mir die AD-User ausgibt, welche in einer bestimmten Gruppe sind, diese wird zudem auch ausgegeben.
Nun möchte ich weitere Attribute hinzufügen, z.B. DistinguishedName. Jetzt haut er mir Fehlermeldungen rein und so ganz kann ich diese nicht interpretieren.
Die Fehlermeldung lautet:
Mache ich grundsätzlich etwas falsch?
LG Christian
aktuell schreibe ich ein Script, welches mir die AD-User ausgibt, welche in einer bestimmten Gruppe sind, diese wird zudem auch ausgegeben.
Nun möchte ich weitere Attribute hinzufügen, z.B. DistinguishedName. Jetzt haut er mir Fehlermeldungen rein und so ganz kann ich diese nicht interpretieren.
$dat = @(Get-ADGroup -Filter "name -like 'DL-Computer-*'" -PipelineVariable group | Get-ADGroupMember | select @{n='UserName';e={$_.name}},@{n='GroupName';e={$group.name}})
$dat | select UserName -Unique | ForEach-Object {
$usrgrp = @($dat | where username -eq $_.UserName | sort GroupName);
# Write-Host $_.UserName;
$DistinguishedName = @($dat | Get-ADUser -filter {Name -like $_.UserName} -properties DistinguishedName | Select DistinguishedName);
[pscustomobject]@{
UserName=$_.Username;
Group1=$usrgrp.GroupName;
Group2=$usrgrp[1].GroupName;
Group3=$usrgrp[2].GroupName;
DistinguishedName = $DistinguishedName;
#DistinguishedName= Get-ADUser -filter {Name -like $_.Username} -properties DistinguishedName | Select DistinguishedName
};
}
Die Fehlermeldung lautet:
Get-ADUser : Eigenschaft "UserName" wurde im Objekt vom Typ
"System.Management.Automation.PSCustomObject" nicht gefunden.
In Zeile:7 Zeichen:35
+ ... = @($dat | Get-ADUser -filter {Name -like $_.UserName} -properties D ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.
ActiveDirectory.Management.Commands.GetADUser
Mache ich grundsätzlich etwas falsch?
LG Christian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3686265800
Url: https://administrator.de/contentid/3686265800
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Bin mir jetzt nicht ganz sicher, aber meines Erachtens pipest du nicht das eigentliche Objekt, sondern den Text, den du in der Variable $dat gespeichert hast, das hat dann natürlich keine Eigenschaft Username mehr.
Probiers mal ohne die Variable, indem du den Befehl direkt an das foreach Objekt durchpipest.
Powershell ist btw. größtenteils case-insensitive.
Probiers mal ohne die Variable, indem du den Befehl direkt an das foreach Objekt durchpipest.
Powershell ist btw. größtenteils case-insensitive.
Also pscustomobject ist ein Objekt, dem du einen Namen geben musst, erst dann kannst du die dafür definierten Eigenschaften aufrufen. Du müsstest also z.B. $Benutzerdaten = [pscustomobject] mit den dazu gehörigen Eigenschaften definieren, dann kannst du es mit $Benutzerdaten.Eigenschaft wieder ausgeben.
Für deine Anforderung brauchst du das aber gar nicht. Die Formatierung kannst du doch schon im select machen.
Get-ADGroup -Filter "name -like '*DL-Computer*'" -PipelineVariable group | Get-ADGroupMember | select @{n='UserName';e={$_.name}},@{n='GroupName';e={$group.name}},@{n='DistinguishedName';e={$_.DistinguishedName}}
Für deine Anforderung brauchst du das aber gar nicht. Die Formatierung kannst du doch schon im select machen.
Get-ADGroup -Filter "name -like '*DL-Computer*'" -PipelineVariable group | Get-ADGroupMember | select @{n='UserName';e={$_.name}},@{n='GroupName';e={$group.name}},@{n='DistinguishedName';e={$_.DistinguishedName}}
Da es mich selber interessiert hat, so wär die Schreibweise mit pscustomobject, Name scheint man doch nicht zu brauchen, ist aber ein bisschen langsamer als select.
Get-ADGroup -Filter "name -like '*DL*'" -PipelineVariable group | Get-ADGroupMember | ForEach {
[pscustomobject]@{
Name = $_.Name
DistinguishedName = $_.DistinguishedName
GroupName = $group.name
}
}
Get-ADGroup -Filter "name -like '*DL*'" -PipelineVariable group | Get-ADGroupMember | ForEach {
[pscustomobject]@{
Name = $_.Name
DistinguishedName = $_.DistinguishedName
GroupName = $group.name
}
}