我试图获取密码将在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}}
得到它,但我不能让它适合我的脚本。
答案 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