有效期限和经理姓名的帐户

时间:2014-10-23 11:43:49

标签: powershell active-directory

我试图获取密码将在7天后过期的用户列表以及他们的经理姓名。

这是我最好的猜测:

Search-ADAccount -SearchBase "O..." -AccountExpiring -TimeSpan 07.00:00:00 | ` 
where {$_.ObjectClass -eq 'user'} | `
Get-ADUser -Properties Name, Manager, AccountExpirationDate | `
Select Name, Manager, AccountExpirationDate | Out-GridView -notype

问题是我得到了管理器的完整对象,我只想要他的显示名称。

我读到我可以使用:

Select-Object Name, @{n="ManagerName";e={(Get-ADUser -Identity $_.Manager -Properties displayName).DisplayName}}

得到它,但我不能让它适合我的脚本。

2 个答案:

答案 0 :(得分:0)

替换代码的这一部分中的属性Manager

... | Select Name, Manager, AccountExpirationDate | ...

带有计算属性:

... | Select Name, @{n="ManagerName";e={(Get-ADUser -Identity $_.Manager -Properties displayName).DisplayName}}, AccountExpirationDate | ...

答案 1 :(得分:0)

如果你在一个大域中运行它,这将会非常慢。计算的属性非常慢。我写了关于this on my blog的文章。要获得您想要的内容,我会通过执行以下操作来使用单个Get-AdUser cmdlet:

$7DaysAgo = (Get-Date).AddDays(-7)
$Today = Get-Date

Get-ADUser -Filter {Enabled -eq $true } -Properties AccountExpirationDate,Manager | Where-Object { ($AccountExpirationDate -ge $7DaysAgo) -and ($AccountExpirationDate -lt $Today)} | Select-Object Name,Manager,AccountExpirationDate | Out-GridView