您好如何将以下powershell foreach循环导出为CSV | export-csv filename.csv遗憾地不适用于foreach循环。 Manager参数也只输出DN,有没有办法在同一输出而不是DN中显示管理员电子邮件或SamAccountName?
$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 :(得分:0)
我知道有几种方法可以做到这一点。
将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
答案 1 :(得分: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
至少,这似乎对我有类似的困难。