将不相关的列添加到导出 csv 追加



我有一个变量,$var,它保存Active Directory帐户名称,以及每个帐户所属的AD组。该变量当前如下所示:

用户名1组 1组2组3用户名2组 1组2用户名3组 1组2组3。

现在,我想循环$var.如果条目是用户名(所有这些用户名都以 adm 开头,所以这很容易),请将其附加到 CSV 中。如果是组(-notlike "adm*"),则拉取组帐户名称、说明和信息,并将其附加到同一 CSV 中。我将帐户名称导出为 CSV 没有问题,使用循环将组信息单独导出到 CSV 也没有问题。我认为一旦帐户名称在其中,将组信息导出到 CSV 就会出现问题;标题或列名称似乎有问题。这是我尝试使用的:

foreach ($z in $var) {
    if ($z -like "adm*") {
        $z | out-file c:ahoysupertest.csv -append
    } elseif ($z -notlike "adm*") {
        Get-ADGroup $z -Properties samaccountname,description,info |
        select samaccountname,description,info |
        Export-Csv c:ahoysupertest.csv -append -NoTypeInformation
    }
}

现在,这是我希望CSV的样子:

用户名1组1名称 组1描述 组1信息组2名称 组2描述 组3信息用户名2组1名称 组1描述 组1信息组2名称 组2描述 组3信息

这是我得到的错误:

导出-csv :无法将 CSV 内容追加到以下文件:C:\ahoy\supertest.csv.追加的对象没有对应于以下列:ADM007。继续不匹配属性,添加 -Force 参数,然后重试该命令。行:6 字符:103+ ...翻录,信息 |Export-csv c:\ahoy\supertest.csv -append -NoTypeInformation+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + 类别信息 : 无效数据: (adm007:字符串) [导出-csv], 无效操作异常    + FullQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell.Command.ExportCsvCommand

的,第一个帐户名称是 adm007。希望你们能帮助我。

你的数据格式不是 CSV,所以我不建议使用 *-Csv cmdlet 来处理它。只需输出带有Out-File的自定义格式行:

$var | ForEach-Object { 
    if ($_ -like "adm*") {
        $_
    } else {
        $group = Get-ADGroup $_ -Properties samaccountname,description,info
        '{0} {1} {2}' -f $group.samaccountname, $group.description, $group.info
    }
} | Out-File 'C:ahoysupertest.txt'

最新更新