gpt4 book ai didi

powershell - 调用ConvertTo-Csv后无法将简单对象保存为CSV

转载 作者:行者123 更新时间:2023-12-03 01:06:05 25 4
gpt4 key购买 nike

我使用CopnverTo-Csv将对象转换为正确的格式。如果您问我,将内容保存到CSV文件应该非常简单,否则意味着ConvertTo-Csv 的意义是什么?

我设法通过此行将对象转换为所需格式

$checkListCsv = $checkListObject | Get-Member -MemberType NoteProperty | Select-Object @{name='Name';expression={$_.name}},@{name='Value';expression={$object.($_.name)}} | ConvertTo-Csv

当我在控制台中输入 $checkListCsv时,我看到
#TYPE Selected.Microsoft.PowerShell.Commands.MemberDefinition
"Name","Value"
"1 week follow up completed",
"Add to print server",
"Add username to Computer description in AD",
"Additional approved software installation",
"BitLocker enrolment as Admin and user",
"Description",
"Email signature",
"Existing approved none-standard software",
"Hibernation off",
"Install Itunes",
"Install Java",
"Label machine",
"Log into SmartNet",
"Map network drives",
"Map network printers",
"New Machine Name",
"New Machine Serial",
"New Starter",
"Old Machine Name",
"Print card number",
"Sign into OneDrive",
"Skype contact",
"Sound",
"Starting Date",
"Technician",
"Time zone",
"Update required hardware drivers",
"Update ServiceNow",
"User",
"User Data and existing mailboxes",
"VPN client",
"Wireless",
"WP OU",

完善!

现在我要做的就是将其保存到一个csv文件中,但是由于某种原因我无法解决。

我试过了
$checkListCsv | Export-Csv -Path "C:\temp\CheckList.csv"

但是,csv文件现在包含
#TYPE System.String
Length
61
14
29
22
45
44
40
14
18
43
18
17
15
16
20
21
23
19
21
14
19
20
21
16
8
16
13
12
35
20
7
35
13
11
8

我尝试了 .ToString(),但这只是输出
System.Object[]

真烦人保存内容的正确方法是什么?

最佳答案

直接导出到csv:

$checkListObject |
Get-Member -MemberType NoteProperty |
Select-Object @{name='Name';expression={$_.name}},@{name='Value';expression={$object.($_.name)}}
Export-Csv -Path "C:\temp\CheckList.csv"

或者,如果您在其他地方使用 $checkListCsv,请完全删除 ConvertTo-Csv:
$checkListCsv = $checkListObject |
Get-Member -MemberType NoteProperty |
Select-Object @{name='Name';expression={$_.name}},@{name='Value';expression={$object.($_.name)}}

$checkListCsv |Export-Csv -Path "C:\temp\CheckList.csv"

或使用 Out-File(不建议这样做,只是为了完整性)
$checkListCsv = $checkListObject |
Get-Member -MemberType NoteProperty |
Select-Object @{name='Name';expression={$_.name}},@{name='Value';expression={$object.($_.name)}} |
ConvertTo-Csv

$checkListCsv | Out-File -Path "C:\temp\CheckList.csv"

进一步说明

ConvertTo-Csv Cmdlet接收一个对象,并给您返回一个字符串(如果有多行,则返回一个字符串数组)。字符串具有单个属性- Length
Export-Csv Cmdlet接收一个对象,并导出该对象的属性。因此,直接将其传递给对象。如果您首次使用 ConvertTo-Csv,则实际上是将其传递给字符串数组,并打印出每行的长度...
Out-File喜欢字符串,并且会打印出您在控制台中得到的内容,但是如果最终目标是CSV文件,则它会很长且毫无意义。

关于powershell - 调用ConvertTo-Csv后无法将简单对象保存为CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48797681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com