带点符号的PowerShell组对象
我正在尝试为每个经理创建一封电子邮件,他在active directory中负责的用户帐户将在给定的时间范围内过期。它已经运行得很好了,但我在对经理进行分组时遇到了一些问题 如果能够将管理者分组,然后在一个小HTML表(带点符号的PowerShell组对象,powershell,Powershell,我正在尝试为每个经理创建一封电子邮件,他在active directory中负责的用户帐户将在给定的时间范围内过期。它已经运行得很好了,但我在对经理进行分组时遇到了一些问题 如果能够将管理者分组,然后在一个小HTML表($Rows)中收集该特定管理者负责的所有用户,那就太好了。HTML代码不是问题所在,但迭代该管理器的用户是我的问题 代码: $OU = 'OU=BBB,OU=EU,DC=domain,DC=net', 'OU=AAA,OU=EU,DC=domain,DC=net' [INT]$D
$Rows
)中收集该特定管理者负责的所有用户,那就太好了。HTML代码不是问题所在,但迭代该管理器的用户是我的问题
代码:
$OU = 'OU=BBB,OU=EU,DC=domain,DC=net', 'OU=AAA,OU=EU,DC=domain,DC=net'
[INT]$Days = 30
$ExpUsers=$Objects=@()
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 | % {
$Rows=@()
foreach($M in $_) {
# Create HTML row for each user with the same manager
$M.Group.Manager.SurName
}
}
可以像这样轻松地对经理进行分组:
$Objects.Manager | Group-Object SamAccountName
$Objects += [PSCustomObject]@{
UserSamAccountName = $User.SamAccountName
UserGivenName = $User.GivenName
ManagerSamAccountName = $Manager.SamAccountName
ManagerGivenName = $Manager.GivenName
}
但是,当我这样做时,我不能再使用用户
属性,因为它们没有通过管道传输到组对象
克服这一障碍的最佳方法是什么?我当然可以这样创建我的对象:
$Objects.Manager | Group-Object SamAccountName
$Objects += [PSCustomObject]@{
UserSamAccountName = $User.SamAccountName
UserGivenName = $User.GivenName
ManagerSamAccountName = $Manager.SamAccountName
ManagerGivenName = $Manager.GivenName
}
但是,如果我以后想添加内容,这个解决方案似乎没有那么灵活。我在一个示例中找到了我的答案: