Active Directoryユーザーが持つ可能なすべての電子メールアドレスを含むCSVを作成する必要があります。 CSVは、次の形式(彼らがに輸入されようとしているため、非常に剛性API)である必要がありますPowershell - 列数が不明なカスタムオブジェクトを作成する
$Group = "GroupNAme
$usersObj = @()
$countMax = 0
$GetAdGroup = Get-AdGroup -Identity $Group -Properties *
[array]$members = $GetAdGroup.Members
ForEach ($member in $members) {
$currentUser = get-aduser -Identity $member `
-Properties EmailAddress, ProxyAddresses |
Where {$_.Enabled -eq "True"}
$countTemp = ($currentUser.ProxyAddresses).count
if ($countTemp -gt $countMax){ $countMax = $countTemp}
foreach ($mailAdd in $currentUser.ProxyAddresses) {
$usersOBJ += [pscustomobject]@{
'Username' = $currentUser.SamAccountName;`
'ProxyAddresses' = $mailAdd.SubString(5)
}
}
$usersOBJ | Export-CSV -NoTypeInformation C:\Export.csv
今私の既存のオブジェクトを吐き出す:
Username | EmailAddress1 | EmailAddress2 | EmailAddressN
私のスクリプトは、これまでのところ、このようになります。ユーザーは次のようになります。
UserName | Emailaddress1
Username | Emailaddress2
Username | EmailsaddressN
私は、より良いオブジェクトを作成する方法を練り上げることはできません。私は発生するProxyAddressesの最大数を得ることができますが、私は自分のオブジェクトを構築し、それらの列に$ currentUser.ProxyAddressesの値を入力する方法を理解できません。
私はハッシュテーブルについて読んだが、彼らは通常の形式を取って、自分の要件に適合していないように見えます:
Username1 | Username2
Emailaddress1 | Emailaddress1
Emailaddress2 | Emailaddress2
誰もが正しい方向に私を指すしてくださいことはできますか?
乾杯!