Export-CSV
用于将具有属性的对象导出到 csv。您正在尝试导出单个字符串,该字符串仅包含一个值和一个Length
属性。
此外,-
它不是 csv 中的有效分隔符(至少在 .NET 中不是)。可以使用-NoTypeInformation
-switch 删除类型信息。尝试这个:
$fileIn | % { $array = $_.split(" ")
if ($array[0] -eq "User") {
$name = $array[1]+"."+$array[2]
$remaining = ""
for ($i = 3; $i -ne $array.length; $i++) {$remaining+=$array[$i]+" "}
Get-ADUser $name -properties description, company | % {
New-Object psobject -Property @{
"Name" = $name
"Remaining" = $remaining
"Description" = $_.Description
"Company" = $_.Company
}
}
}
} | Select-Object Name, Remaining, Description, Company |
Export-CSV $output -Delimiter ';' -NoTypeInformation
我试图了解您在这里尝试做什么。为您提供更改的摘要:
我正在为您的每一行创建一个包含您要导出的信息的对象$filein
我在select-object
为每一行$filein
创建一个对象之后设置属性的顺序
我将对象数组导出到带有分隔符的 csv 文件;
(只是为了显示您如何指定它),并且在开始时没有类型信息。如果你export-csv
在 foreach 循环中使用,它每次都会覆盖文件,最后你只有一行 + 标题行。在 PS3.0 中,您可以使用-Append
switch 在循环内完成。
编辑如果您真的需要字符串格式,则需要使用其他内容Export-CSV
,例如。Out-File
带-Append
开关。前任:
$fileIn | % { $array = $_.split(" ")
if ($array[0] -eq "User") {
$name = $array[1]+"."+$array[2]
$remaining = ""
for ($i = 3; $i -ne $array.length; $i++) {$remaining+=$array[$i]+" "}
Get-ADUser $name -properties description, company | % {
"$name - $remaining - $($_.description) - $($_.company)" | Out-File -Append $output
}
}
}