我正在尝试创建PowerShell脚本,以列出在过去21天内创建的活动目录中的所有组。这样可以正常工作,但有时组可以由用户或其他安全组管理。我希望它显示用户/安全组的“显示名称”。
到目前为止我创造了什么:
$When = ((Get-Date).AddDays(-21)).Date
Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter {whenCreated -ge $When} -Properties * |
Select whenCreated, cn, displayName,GroupScope, GroupCategory, description, info,@{Label='managedBy';Expression={
if(Get-ADObject $_.managedBy -Filter 'ObjectClass -eq "user"')
{(Get-ADUser $_.Manager -Properties displayName).displayName}
Else{(Get-ADGroup $_.managedBy -Properties cn).cn}
}
| Export-Csv "New groups -21 days.csv" -NoTypeInformation -Delimiter ";" -Encoding utf8; start "New groups -21 days.csv"
它说:在哈希文字中键入后缺少'='运算符,我似乎无法弄清楚需要更改的内容。谢谢你的帮助。
答案 0 :(得分:0)
您缺少变量 $。managedBy 和 $。经理的下划线。两者都应该是$_.managedBy
$_.Manager
并且缺少右括号。
$When = ((Get-Date).AddDays(-21))
Get-ADGroup -Filter {whenCreated -ge $When} -Properties * |
Select whenCreated, cn, displayName, GroupScope, GroupCategory, description, info,
@{
Label='managedBy';
Expression={
if(Get-ADObject $_.managedBy -Filter 'ObjectClass -eq "user"') {
(Get-ADUser $_.Manager -Properties displayName).displayName}
Else{
(Get-ADGroup $_.managedBy -Properties cn).cn
}
}
} | Export-Csv "New groups -21 days.csv" -NoTypeInformation -Delimiter ";" -Encoding utf8; start "New groups -21 days.csv"
答案 1 :(得分:0)
检查该计算属性的语法。你的大括号不平衡(最后应该有另一个}来关闭哈希表达式。)