2014-05-07 46 views
0

嗨如何導出以下PowerShell foreach循環到CSV | export-csv filename.csv很遺憾不適用於foreach循環。此外,管理器參數只輸出DN,有沒有辦法顯示經理電子郵件或SamAccountName在相同的輸出,而不是DN?Powershell導出csv foreach循環爲非活動AD帳戶

$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 

} 

回答

0

我知道有幾種方法可以做到這一點。直接

$result = 
foreach ($SomeThing in $SomeThings) 
    { 
    #Create an object 
    } 

$result | Export-csv c:\somedir\somethings.csv 

或包裹foreach循環中的子表達式,然後管到出口-CSV:

foreach循環的結果分配給一個變量,然後在端部導出

$(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 
0

最近已經遇到了麻煩類似的問題,我可能會嘗試打電話給你過濾器作爲一個字符串,而不是一個代碼塊。例如:

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 

至少,這似乎在類似的困境中爲我工作。