Я искал везде и думаю, что это довольно распространенное явление, но, возможно, и нет.
Я хочу перечислить домен пользователя с именем пользователя через Get-ADGroupMember. Например, у меня есть это:
Get-ADGroupMember -identity "MyGroup" -Recursive -Server "my.domain.net" | select-object SamAccountName
который перечисляет
SamAccountName
--------------
jsmith
dsmith
lsmith
Я хочу, чтобы этот список возвращал основной домен пользователя, например, у меня есть домены
prod.my.domain.net
dev.my.domain.net
my.domain.net
Мне нужен запрос, который вернет
prod\jsmith
dev\dsmith
my\lsmith
в зависимости от домена пользователя (обратите внимание, порядок имен не имеет значения).
решение1
Хорошо, после того, как я погуглил еще и поигрался с этим некоторое время, я пришел к следующему, который дает мне то, что мне нужно. Я не уверен, что это лучший способ получить это, но мне это кажется чистым
Get-ADGroupMember -identity "MyGroup" -Recursive -Server "my.domain.net" | select-object @{name="Login"; expression={(($_.DistinguishedName -split '(DC=)')[2] -replace ',')+"\"+$_.SamAccountName}}
который дает
Login
-----
prod\jsmith
dev\dsmith
my\lsmith
решение2
У меня нет многодоменной среды для тестирования, но я думаю, что это сделает то, что вам нужно.
Get-ADGroupMember -Identity 'MyGroup' | foreach {
$ADuser = Get-ADUser -Identity $_.sAMAccountName -Properties UserPrincipalName
$Domain = $ADuser.UserPrincipalName.Split('@.')[1]
$Name = $Domain + '\' + $ADuser.Name
$Name
}