這是一個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