这是一个PowerShell/AD /交换问题....从PS脚本导出信息到csv
我正在对一些用户的脚本来检查他们的一些属性,但我有麻烦得到这个输出到CSV。脚本运行良好,并且完全按照我需要的操作执行,屏幕上的输出很好,我只是无法将其直接导出到csv。
输入用户名是一个逗号分隔的TXT文件(例如,“用户名1,用户名2,USERNAME3”)
我已经创建自定义PS的对象,增加了他们,然后出口的,但它不工作试点。 ...
任何建议感激地接受..
感谢
乔治
$array = Get-Content $InputPath
#split the comma delimited string into an array
$arrayb = $array.Split(",");
foreach ($User in $arrayb)
{
#find group memebership
Write-Host "AD group membership for $User"
Get-QADMemberOf $User
#Get Mailbox Info
Write-Host "Mailbox info for $User"
Get-Mailbox $User | select ServerName, Database, EmailAddresses, PrimarySmtpAddress, WindowsEmailAddress
#get profile details
Write-Host "Home drive info for $User"
Get-QADUser $User| select HomeDirectory,HomeDrive
#add space between users
Write-Host ""
Write-Host "******************************************************"
}
Write-Host "End Script"
EDITED .... 方法我都试过了exproting(只显示for循环/导出代码) 方法一
$AllData = @()
foreach ($User in $arrayb)
{
#set title for this user
#Write-host "Details for $User"
#find out their group memebership
Write-Host "AD group membership for $User"
$AdMemberOf = Get-QADMemberOf $User
Write-Host "ad completed"
Write-Host ""
Write-Host ""
#Get Mailbox Info
Write-Host "Mailbox info for $User"
$ExInfo = Get-Mailbox $User | select ServerName, Database, EmailAddresses, PrimarySmtpAddress, WindowsEmailAddress
Write-Host "ex completed"
Write-Host ""
Write-Host ""
#get profile details
Write-Host "Home drive info for $User"
$HomeInfo = Get-QADUser $User| select HomeDirectory,HomeDrive
Write-Host "home drive completed"
#add space between users
Write-Host ""
Write-Host "******************************************************"
$ReturnedObj = New-Object PSObject
$ReturnedObj | Add-Member NoteProperty -Name "AD Group Membership for $User" -Value $AdMemberOf
$ReturnedObj | Add-Member NoteProperty -Name "Exchange details for $User" -Value $ExInfo
$ReturnedObj | Add-Member NoteProperty -Name "Home drive info for $User" -Value $HomeInfo
Write-Host $ReturnedObj
$AllData += $ReturnedObj
}
Write-Host "starting csv export"
Write-Output $AllData |export-csv -Path $OutputPath -notype -force
Write-Host "End Script"
方法2
$ExportInfo = @()
foreach ($User in $arrayb)
{
$UserInfo = New-Object System.Object
#set title for this user
$ExportInfo += "Details for $User"
#Get Mailbox Info
$ExportInfo += Get-Mailbox $User
#find out their group memebership
$ExportInfo += Get-QADMemberOf $User
#get profile details
$ExportInfo += Get-QADUser $User| select HomeDirectory,HomeDrive
#add space between users
$ExportInfo += ""
$ExportInfo += ""
}
$ExportInfo | Export-Csv -Path $OutputPath ;
编辑:
感谢来自Stej的建议我现在有以下代码...仍然无法正常工作。我已经添加了一个检查来确认用户是否存在于AD中。第一个问题是获取用户AD组成员资格 - 如果我放入一个中断点并查看特定用户AD成员资格的值,则变量的值为“无法处理参数,因为参数”obj“的值为null。将参数“obj”的值更改为非空值。“不知道是什么导致了这一点,所以我现在只是忽略了它,并且注意到AD成员关注的其余部分的工作。
将行注释掉后,脚本运行良好,并在底部有一个断点,我可以查看$ ExportInfo的值,它们都看起来很好,即它们都已正确保存到变量中。但是,它不会输出。正如你所看到的,我把一条命令写到屏幕上,但没有显示任何内容。当它试图执行导出行(即“Export-Csv $ ExportInfo -Path $ OutputPath”)时,出现以下错误: “无法将'System.Object []'转换为参数'Delimiter'所需的类型'System.Char' ”不支持指定的方法 在:行:80字符:10 +出口-CSV < < < < $ ExportInfo -Path $ OutputPath “
我chnaged行以” $ ExportInfo |出口-CSV - 路径$ OutputPath“,它现在导出为CSV ...不知道为什么?尽管两个问题......如上所述,AD组不工作,并且电子邮件地址字段(应该返回像{SMTP:[email protected],smtp:[email protected], smtp:[email protected]和SIP:[email protected]})仅以CSV格式显示为“Microsoft.Exchange.Data.ProxyAddressCollection”。再次,在$ ExportInfo检查,地址是有....
感谢
$ExportInfo = @()
foreach ($User in $arrayb)
{
$CheckUser = Get-QADUser -Name $User
if (!$CheckUser)
{
$CountUser++
Write-Warning "############################################"
Write-Warning "$user not found in AD"
Write-Warning "############################################"
}
else
{
$CountUser++
$UserInfo = New-Object System.Object
#find out their group memebership
Write-Host "AD group membership for $User"
#$Temp = Get-QADMemberOf $User
#$UserInfo | Add-Member NoteProperty -Name "AD Group Membership" -Value $Temp.Name
#set title for this user
#Write-host "Details for $User"
#Get Mailbox Info
Write-Host "Mailbox info for $User"
$Temp = Get-Mailbox $User #| select ServerName, Database, EmailAddresses, PrimarySmtpAddress, WindowsEmailAddress
$UserInfo | Add-Member NoteProperty -Name "ServerName" -Value $Temp.ServerName
$UserInfo | Add-Member NoteProperty -Name "Database" -Value $Temp.Database
$UserInfo | Add-Member NoteProperty -Name "Email Addresses" -Value $Temp.EmailAddresses
$UserInfo | Add-Member NoteProperty -Name "Primary SMTP" -Value $Temp.PrimarySmtpAddress
$UserInfo | Add-Member NoteProperty -Name "Windows Email Address" -Value $Temp.WindowsEmailAddress
#$ReturnedObj | Add-Member NoteProperty -Name
#get profile details
Write-Host "Home drive info for $User"
$Temp = Get-QADUser $User #| select HomeDirectory,HomeDrive
$UserInfo | Add-Member NoteProperty -Name "Home Directory Location" -Value $Temp.HomeDirectory
$UserInfo | Add-Member NoteProperty -Name "Home Drive Mapped To" -Value $Temp.HomeDrive
#add space between users
Write-Host ""
Write-Host "******************************************************"
$ExportInfo += $UserInfo
}#end else
}
Write-Host "blah"
Write-Host $ExportInfo
Export-Csv $ExportInfo -Path - $OutputPath
Write-Host "Number of Users processed: $CountUser"
这是什么意思*不工作*和*得到麻烦*?有没有错误信息?该文件是否为空?你能分享你用于csv导出的代码吗? – stej 2010-03-18 16:19:22