2016-07-27 55 views
0

我有一些數據我試圖推送到CSV,但它保持失敗。有什麼建議?無法將我的數據導出到CSV

Import-Module ActiveDirectory 

$ExportFile = "C:\T2\Test.csv" 

$MacHeading = "Mac OS: " 
$MACOS = Get-ADComputer -Filter 'OperatingSystem -like "MAC*"' -Properties OperatingSystem, CanonicalName | Select Name, CanonicalName, OperatingSystem 
$MACOSCount = Get-ADComputer -Filter 'OperatingSystem -like "MAC*"' | Measure-Object | %{$_.Count} 

$MacHeading | Export-CSV -path $ExportFile -Append 
$MACOS | Export-CSV -path $ExportFile -Append 
$MACOSCount | Export-CSV -path $ExportFile -Append 

我的錯誤信息是:

出口-CSV:不能CSV內容到以下文件追加: C:\ T2 \ Test.csv。附加對象沒有 對應於以下列的屬性:Mac OS:。要繼續使用 不匹配的屬性,請添加-Force參數,然後重試 命令。在C:\ T2 \ Test.ps1:9 char:15 + $ MacHeading | Export-CSV -path $ ExportFile -Append + ~~~~~~~~~~~~~~~~~~~~~ +路徑+ CategoryInfo + CategoryInfo :InvalidData:(Mac OS中::字符串)[導出-CSV],出現InvalidOperationException + FullyQualifiedErrorId:CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell.Commands.ExportCsvCommand

+0

您是否嘗試添加-Force參數,如錯誤消息所示?如果是這樣,結果如何? – morgb

+0

結果是: #TYPE System.String 長度 這些是使用-force選項後的結果。它似乎是描述或垃圾數據不確定。 – JRN

回答

1

而可以創建一個csv文件手動它通常是麻煩的和你必須在手動添加數據時匹配列標題。

在上面的代碼中,通過創建帶有一個頭\列'mac os'的csv文件來啓動您的csv。 macos是一個具有各種屬性的對象,它不包含名爲'mac os'的頭部,因此export-csv不知道將數據發送到何處。

你也缺少-notypeinformation開關export-csv沒有這些CSV將包含對象類型的額外不必要的頭

你可以看看做這樣的事情:

$comps = Get-ADComputer -Filter 'OperatingSystem -like "MAC*"' -Properties OperatingSystem, CanonicalName | 
     Select-Object @{N='MacHeading';e={'Mac OS'}},Name, CanonicalName, OperatingSystem 

$comps | 
ForEach-Object -Begin {$i = 0} -Process {$I++; $_ | Add-Member -Name ID -Value $i -MemberType NoteProperty -PassThru} | 
    Export-Csv -Path $path -NoTypeInformation 
+0

輝煌的基蘭。非常感謝你是第一個真正爲我提供答案的人。我一定花了6-7個小時研究它,並且在幾分鐘內解決了它。非常感謝!!! – JRN

0
$comps=Get-ADComputer -Filter { OperatingSystem -Like '*MAC*' } -Properties OperatingSystem,CanonicalName 
0

如果你願意去沒有$MacHeading(這不是一個非常有用的CSV),你可以這樣做:

Get-ADComputer -Filter 'OperatingSystem -like "MAC*"' -Properties OperatingSystem, CanonicalName | 
    Select Name, CanonicalName, OperatingSystem | 
    Export-CSV -path $ExportFile -Append -NoTypeInformation 
Get-ADComputer -Filter 'OperatingSystem -like "MAC*"' | 
    Measure-Object | %{$_.Count} | 
    Out-File $ExportFile -Append -Encoding ASCII 

關鍵是要使用Out-File而不是Out-CSV作爲不會真正生成CSV的項目。