运行以下代码时,我在单独的列中获得了详细信息列表。
$file = 'c:\output\testing.csv'
Get-AdUser -filter "DisplayName -eq 'joe bloggs'" |
Get-ADUser -Properties * |
Select-Object givenName, surname, mail,
@{ Label = "Country"
Expression = { if ($_.Country) { $_.Country } else { "GB" } }
,samaccountname, department, description | Export-csv -path $file
输出(1)如下:
+-----------+---------+-----------------+---------+----------------+------------+-------------+
| givenName | surname | mail | Country | samaccountname | department | description |
+-----------+---------+-----------------+---------+----------------+------------+-------------+
| joe | bloggs | joe.b@email.com | GB | bloggsG | IT | Support |
+-----------+---------+-----------------+---------+----------------+------------+-------------+
但是,如果我将Export-CSV修改为Add-Content
,则输出(2)如下:
+---------------------------------------------------------------------------------------------------------------------------------------+---------+------+---------+----------------+------------+-------------+
| givenName | surname | mail | Country | samaccountname | department | description |
| {givenName=Fred; surname=Smith; mail=fred.s@email.com; Country=GB; samaccountname=smithF; department=Facilities; description=cleaner} | | | | | | |
+---------------------------------------------------------------------------------------------------------------------------------------+---------+------+---------+----------------+------------+-------------+
如何使用Add-Content
显示与第一个表相同的输出?
答案 0 :(得分:3)
Add-Content
用于将非结构化文本附加到文本文件,类似于Set-Content
-您不能使用它将行附加到现有的 CSV文件。
相反,您必须使用Export-Csv -Append
:
... | Export-Csv -Path $file -Append -Encoding Ascii # pick the proper encoding
字符编码警告,自Windows PowerShell v5.1起 [1] :
无 -Append
,Export-Csv
使用 ASCII (!)编码-反对记录的行为。
?
,即您可能会丢失信息 。 使用 -Append
,奇怪的是,非ASCII字符是 UTF-8 编码的-与文件的原始编码无关。
要获得可预测的行为,请始终将-Encoding
与Export-Csv
一起显式使用-不论是否使用-Append
。
[1]跨平台PowerShell Core 版本不受影响,因为默认情况下始终使用无BOM的UTF-8编码。