【问题标题】:Generate a CSV File生成 CSV 文件
【发布时间】:2018-07-23 09:19:49
【问题描述】:

我正在创建一个 powershell 脚本,其中一个功能是从 CSV 创建多用户。

我想要它,所以脚本运行后它会清除 CSV 文件,然后生成另一个带有正确标题的文件。

相关代码

脚本开始

[string]$csvpath = "multiusers.csv"  
$csv = Import-Csv -Path "multiusers.csv"

脚本结束

Clear-Content $csvpath
Write-Output "User,First Name,Surname,Job Title,Department,Ticket Number,Managers First Name,Managers Surname" `n`n|FT -AutoSize >>multiusers.csv

在我看来,这应该可行,但所做的只是创建一个大标题。

【问题讨论】:

    标签: csv powershell-4.0


    【解决方案1】:

    您正在使用一个长字符串作为一列,先将其分成多个字符串然后删除| FT -AutoSize[...]部分,创建一个自定义对象行并使用Export-CSV

    另外,您的某些列包含空格,您需要在它们之间添加引号

    试试这个:

    "" | Select User,"First Name",Surname,"Job Title",Department,"Ticket Number","Managers First Name","Managers Surname"  | Export-csv multiusers.csv -NoTypeInformation
    

    另一种使用拆分字符串的方法,如下所示:

    $Columns = "User,First Name,Surname,Job Title,Department,Ticket Number,Managers First Name,Managers Surname" -split ","
    "" | Select $Columns | Export-csv c:\multiusers.csv -NoTypeInformation
    

    如果您不想要空的逗号行,请使用 Out-File。

    $Columns = "User,First Name,Surname,Job Title,Department,Ticket Number,Managers First Name,Managers Surname" -split ","
    (($Columns | % {'"{0}"' -f $_} ) -join ',') + "`n`n" | Out-File C:\multiusers.csv
    

    【讨论】:

    • 我没有从脚本中选择任何字段。 CSV 文件已生成。一旦我的同事填写了 CSV,并通过脚本运行它,他们必须从 CSV 中手动删除除列标题之外的用户。当用户创建可能超过 200 个时,这可能会很耗时。我需要它来自动清除文件(我目前正在使用它),然后使用正确的列标题重新生成 CSV 文件。
    • 第二个,在 CSV 中导致以下内容。 #TYPE Selected.System.String "User","First Name","Surname","Job Title","Department","Ticket Number","Managers First Name","Managers Surname" ,,,,,, ,
    • 只需将-NoTypeInformation 添加到Export-CSV 部分。添加到答案
    • 我已经这样做了,它仍然留下“,,,,,,”但是我也需要删除它
    • 这只是一个空行,如果你不希望它使用 Out-File 看到更新的答案
    猜你喜欢
    • 2011-10-14
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2021-10-07
    • 2011-05-17
    相关资源
    最近更新 更多