【问题标题】:Powershell export csv foreach loop for inactive AD accounts非活动 AD 帐户的 Powershell 导出 csv foreach 循环
【发布时间】:2014-05-07 01:25:40
【问题描述】:

嗨,我如何将以下 powershell foreach 循环导出到 CSV | export-csv filename.csv 遗憾地不适用于 foreach 循环。经理参数也只输出 DN,有没有办法在同一输出中显示经理的电子邮件或 SamAccountName 而不是 DN?

$90Days = (get-date).adddays(-90)
$OUSearch = 

"OU=Contractors,OU=User,OU=x,OU=NZ,OU=Office,DC=add,DC=company,DC=coop,DC=us",
"OU=Contractors,OU=User,OU=xxx,OU=NZ,OU=Office,DC=add,DC=company,DC=coop,DC=us",
"OU=Contractors,OU=User,OU=xxxx,OU=NZ,OU=Office,DC=add,DC=company,DC=coop,DC=us",
"OU=Contractors,OU=User,OU=xxxxx,OU=NZ,OU=Office,DC=add,DC=company,DC=coop,DC=us",
"OU=Contractors,OU=User,OU=xxxxxx,OU=NZ,OU=Office,DC=add,DC=company,DC=coop,DC=us"

Foreach ($ou in $OUSearch){
Get-ADUser -SearchBase $ou -filter {(lastlogondate -le $90days -or passwordlastset -le               $90days) -and (enabled -eq $True)} -Properties lastlogondate, passwordlastset, manager |    Select SamaccountName, Name, Email, Manager, lastlogondate, passwordlastset, Enabled

}

【问题讨论】:

    标签: powershell csv foreach active-directory


    【解决方案1】:

    我知道有几种方法可以做到这一点。

    将foreach循环的结果赋值给一个变量,然后在最后导出:

    $result =
     foreach ($SomeThing in $SomeThings)
      {
        #Create an object
      }
    
    $result | Export-csv c:\somedir\somethings.csv
    

    或者将 foreach 循环包装在一个子表达式中,然后直接通过管道传输到 Export-csv:

    $(foreach ($SomeThing in $SomeThings)
      {
        #Create an object
      }) | Export-csv c:\somedir\somethings.csv
    

    您也可以使用脚本块代替子表达式:

    &{foreach ($SomeThing in $SomeThings)
      {
        #Create an object
      }} | Export-csv c:\somedir\somethings.csv
    

    不推荐,但经常看到的是创建一个数组并在循环内对数组进行重复添加。馊主意。不要这样做:

    $result = @()
    
    foreach ($SomeThing in $SomeThings)
      {
        #Create an object
        $result += $object
      }
    
     $result | Export-csv c:\somedir\somethings.csv
    

    【讨论】:

      【解决方案2】:

      最近遇到了类似问题,我可能会尝试将您的过滤器称为字符串,而不是代码块。比如:

      ForEach ($ou in $OUSearch) {
      Get-ADUser -SearchBase $ou -filter '( lastlogondate -le $90days -or passwordlastset -le $90days ) -and ( enabled -eq $True )' -Properties lastlogondate, passwordlastset, manager | Select SamaccountName, Name, Email, Manager, lastlogondate, passwordlastset, Enabled 
      } | export-csv test.csv
      

      至少,这在类似的情况下似乎对我有用。

      【讨论】:

        猜你喜欢
        • 2016-03-13
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 2014-12-05
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多