PowerShell如果Else逻辑不好

时间:2014-04-01 13:08:48

标签: powershell

现在我的语法问题已修复(请不要查看缺少的下划线,这是网站上的问题)我很难将“ManagedBy”字段填入“显示名称”的经理(团体或用户)。由于某种原因,我的if / else逻辑不稳定,因为它只返回blancs。

$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.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)

似乎与this问题相同:

变量扩展在scriptblock过滤器中不起作用。尝试切换到可扩展的字符串过滤器

Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter "whenCreated -ge '$When'" -Properties * 

答案 1 :(得分:0)

试试这个,您的初始 Get-ADGroup 工作正常(在win2012上),如果/其他需要调整的话。

$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={
        $m = Get-ADObject -Identity $_.managedBy -Properties displayName,cn
        if($m.ObjectClass -eq "user") {
            $m.displayName} 
        Else{
            $m.cn
        }
    }
}