如何在CSV文件中跳过第一行

jchrr9hc  于 2023-03-27  发布在  其他
关注(0)|答案(5)|浏览(336)

我想跳过名称,路径,这是第一行时,它产生的CSV文件。我不知道如何做到这一点,我不知道如何做到这一点。
下面是我代码:

function Get-Path{
    param($Object)

    $path = $object.Name
    $parent = Get-View $Object.ExtensionData.ResourcePool
    while($parent){
    $path = $parent.Name + "/" + $path

        if($parent.Parent){
            $parent = Get-View $parent.Parent
        }
        else{$parent = $null}
    }
    $path
}

Get-VM | Select Name,
@{N="Path";E={(Get-Path -Object $_) -replace "^.*?Resources"}} | Export-csv C:\izaz\test.csv -NoTypeInformation
erhoui1w

erhoui1w1#

导出不带标题的CSV文件的最简单方法是使用ConvertTo-Csv,然后使用Select-Object跳过第一行:

Get-VM `
| Select Name, @{N="Path";E={(Get-Path -Object $_) -replace "^.*?Resources"}} `
| ConvertTo-Csv -NoTypeInformation `
| Select-Object -Skip 1 `
| Set-Content -Path C:\izaz\test.csv
ewm0tg9j

ewm0tg9j2#

Import-CSV -Header $StringWithAlternateHeader将为要导入CSV的数组设置标头。它不会替换任何现有的标头。如果在导入之前没有从CSV中删除旧标头,则旧标头将成为数组中的记录。

Example CSV:
Name,Age
Sally,15
Paul,14

$Array = Import-CSV .\example.csv
ARRAY[0] is Sally,15
ARRAY[1] is Paul,14

$Array = Import-CSV .\example.csv -Header @("Child","Age")
ARRAY[0] is Name,Age
ARRAY[1] is Sally,15
ARRAY[2] is Paul,14
ggazkfy8

ggazkfy83#

如果计划将csv文件与Import-csv一起使用,请查看cmdlet文档中的-header参数。此参数允许您指定替代列名,而不是存储在csv文件中的列名。
这是一个可供选择的方法来接受的答案。

kzmpq1sx

kzmpq1sx4#

您可以使用一个简单的IF语句来删除标题行。

$Array = Import-CSV .\example.csv -Header @("Child","Age")
if ($Array.Child -ne "Child)" {

ARRAY[1] is Sally,15
ARRAY[2] is Paul,14
}
p5cysglq

p5cysglq5#

从PowerShell版本7.4开始,ConvertTo-CsvExport-Csv将具有-NoHeader参数:

Get-VM |
    Select Name, @{N="Path";E={(Get-Path -Object $_) -replace "^.*?Resources"}} |
    Export-Csv -NoHeader -NoTypeInformation

另请参阅:#17527 Add -NoHeader switch to Export-Csv and ConvertTo-Csv

相关问题