首页 > 解决方案 > 删除一个txt文件除第一行以外的内容

问题描述

我有两个 PowerShell 脚本:

这就是问题所在。问题在于这部分。

我想对这两个脚本进行升级,包括平均虚拟机数量和非备份虚拟机的平均数量。所以我这样做了:

$csv1 = Import-Csv -Path $path -Delimiter ','

$moy = $csv1.moy | measure -Average | select -expand average
$nb_total_vms = $csv1.nb_total_vms | measure -Average | select -expand average
$nbackedup_vms = $csv1.nbackedup_vms | measure -Average | select -expand average

Write-Host "moy = $moy / $nb_total_vms / $nbackedup_vms"

但是由于这个脚本每个月都会启动,所以我不能让我的第一行像“moy,nb_total_vms,nbackedup_vms”,而是我有值,然后是这一行。如果我把它放在我的另一个脚本上,我将有这样的每一行:

价值
moy,nb_total_vms,nbackedup_vms
价值
moy,nb_total_vms,nbackedup_vms

等等。

我想总是在我的 .txt 文件的第一行写下这一行 (moy,nb_total_vms,nbackedup_vms)。

标签: powershell

解决方案


首先不要使用*-Contentcmdlet 来编写输出文件。创建自定义对象并使用Export-Csv. 这将自动生成您想要的标题行。

$prop = @{
    moy           = $csv1.moy |
                    Measure-Object -Average |
                    Select-Object -Expand Average
    nb_total_vms  = $csv1.nb_total_vms |
                    Measure-Object -Average |
                    Select-Object -Expand Average
    nbackedup_vms = $csv1.nbackedup_vms |
                    Measure-Object -Average |
                    Select-Object -Expand Average
}

New-Object -Type PSObject -Property $prop |
    Select-Object moy, nb_total_vms, nbackedup_vms |
    Export-Csv $file -NoType

上面的Select-Object代码(适用于所有 PowerShell 版本)仅用于确保输出 CSV 中列的顺序。如果你有 PowerShell v3 或更新版本,你可以使用[PSCustomObject]类型加速器来简化它,它会自动使用有序的哈希表。

[PSCustomObject]@{
    moy           = $csv1.moy |
                    Measure-Object -Average |
                    Select-Object -Expand Average
    nb_total_vms  = $csv1.nb_total_vms |
                    Measure-Object -Average |
                    Select-Object -Expand Average
    nbackedup_vms = $csv1.nbackedup_vms |
                    Measure-Object -Average |
                    Select-Object -Expand Average
} | Export-Csv $file -NoType

推荐阅读