在哈希文字中键入后缺少'='运算符

时间:2014-04-01 10:58:21

标签: powershell

我正在尝试创建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"

它说:在哈希文字中键入后缺少'='运算符,我似乎无法弄清楚需要更改的内容。谢谢你的帮助。

2 个答案:

答案 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)

检查该计算属性的语法。你的大括号不平衡(最后应该有另一个}来关闭哈希表达式。)