无法将我的数据导出到 CSV

Unable to export my data to a 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 : Cannot append CSV content to the following file: C:\T2\Test.csv. The appended object does not have a property that corresponds to the following column: Mac OS: . To continue with mismatched properties, add the -Force parameter, and then retry the command. At 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

虽然您可以手动创建一个 csv 文件,但这通常很麻烦,并且您必须在手动添加数据时匹配 header 列。

在上面的代码中,您通过创建一个包含 header\column 'mac os' 的 csv 文件来启动 csv。 macos 是一个具有各种属性的 objects,它不包含一个名为 'mac os' 的 header,因此 export-csv 不知道将数据发送到哪里。

您还缺少 -notypeinformationexport-csv 的切换,否则 csv 将包含额外不需要的 header 和 object 类型

你可以看看做这样的事情:

$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
$comps=Get-ADComputer -Filter { OperatingSystem -Like '*MAC*' } -Properties OperatingSystem,CanonicalName

如果您愿意不使用 $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

关键是对不会真正生成 CSV 的项目使用 Out-File 而不是 Out-CSV