以下代码输出以下内容。
TYPE System.String 长度 100
如何让它实际输出字符串的内容?
$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 | Export-CSV $output}
}
}
答案 0 :(得分:2)
Export-CSV
用于将具有属性的对象导出到csv。您正在尝试导出单个字符串,该字符串仅包含值和Length
属性。
此外,-
不是csv中的有效分隔符(至少不在.NET中)。可以使用-NoTypeInformation
- 开关删除类型信息。试试这个:
$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文件中(只是为了说明如何指定它),并且在开头没有类型信息。如果你在foreach循环中使用export-csv
,它每次都会覆盖文件,你最后只有一行+ header-row。在PS3.0中,您可以使用-Append
开关在循环内完成。
编辑如果您确实需要字符串格式,则需要使用其他内容,然后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
}
}
}
。例如:
{{1}}