いろいろ調べてみたところ、これはかなり一般的なことだと思うのですが、そうでもないかもしれません。
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
}