无法将我的数据导出为CSV

时间:2016-07-27 12:36:36

标签: powershell active-directory export-to-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

我的错误信息是:

  

Export-CSV:无法将CSV内容附加到以下文件:   C:\ T2 \ Test.csv。附加的对象没有属性   对应于以下列:Mac OS :.继续   不匹配的属性,添加-Force参数,然后重试   命令。在C:\ T2 \ Test.ps1:9 char:15   + $ MacHeading | Export-CSV -path $ ExportFile -Append   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidData :( Mac OS :: String)[Export-Csv],InvalidOperationException       + FullyQualifiedErrorId:CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell.Commands.ExportCsvCommand

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分: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的项目。