0
我試圖爲每個管理器創建一個電子郵件,其中他在活動目錄中負責的用戶帳戶將在給定時間範圍內過期。它已經工作得很好,但我在分組管理員方面遇到了一些問題。帶點符號的PowerShell組對象
如果可以將管理人員分組在一起,然後在小型HTML表格($Rows
)中收集該特定經理負責的所有用戶,那將會很好。 HTML代碼不是問題,但迭代該管理器的用戶是我的問題。
代碼:
$OU = 'OU=BBB,OU=EU,DC=domain,DC=net', 'OU=AAA,OU=EU,DC=domain,DC=net'
[INT]$Days = 30
[email protected]()
Foreach ($O in $OU) {
$ExpUsers += Search-ADAccount -AccountExpiring -TimeSpan "$Days.00:00:00" -UsersOnly -SearchBase $O |
Select -ExpandProperty SamAccountName
}
Foreach ($E in $ExpUsers) {
$User = Get-ADUser $E -Properties * | Select SamAccountName, EmailAddress, GivenName,
SurName, AccountExpirationDate, Manager, DisplayName
$Manager = Get-ADUser $User.Manager -Properties * | Select SamAccountName, EmailAddress, GivenName, SurName
$Objects += [PSCustomObject]@{
User = $User
Manager = $Manager
}
}
$Objects | Group-Object Manager.SamAccountName | % {
[email protected]()
foreach($M in $_) {
# Create HTML row for each user with the same manager
$M.Group.Manager.SurName
}
}
分組管理者可以這樣很容易做到:
$Objects.Manager | Group-Object SamAccountName
然而,當我不喜歡這樣,我不能再使用User
性質因爲它們沒有被傳送到Group-Object
。
克服這個障礙的最好方法是什麼?我當然可以創建我的對象是這樣的:
$Objects += [PSCustomObject]@{
UserSamAccountName = $User.SamAccountName
UserGivenName = $User.GivenName
ManagerSamAccountName = $Manager.SamAccountName
ManagerGivenName = $Manager.GivenName
}
但是這種解決方案似乎並不那麼靈活,如果我想以後添加的東西。