powershell - 删除一个txt文件除第一行以外的内容
问题描述
我有两个 PowerShell 脚本:
制作每日平均备份的 VM 数量并将其保存到 .txt 文件中:
$file = "E:\PS\Malik\valeurs.txt" $success_rate = 100 - ($nbckp_vms * 100 / $total_vms) $success_rate_round = [Math]::Round($success_rate,2) #Exported into the $file path Add-Content -Path $file -Value "$success_rate_round,$total_vms,$nbckp_vms" # $text = Get-Content -path $file # Backup rate for production KPI $body = $body + "`r`n" + "*** Backup success rate for production KPIs ***" + "`r`n" $body = $body + "`r`n" + "Daily success rate = $success_rate_round%" $body = $body + "`r`n" + "Total VMs = $total_vms" $body = $body + "`r`n" + "Daily unbacked up VMs = $nbckp_vms" + "`r`n"
用这个 .txt 文件的值做一个月平均数。
这就是问题所在。问题在于这部分。
我想对这两个脚本进行升级,包括平均虚拟机数量和非备份虚拟机的平均数量。所以我这样做了:
$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)。
解决方案
首先不要使用*-Content
cmdlet 来编写输出文件。创建自定义对象并使用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
推荐阅读
- python - Tkinter 停止 root.after 循环
- pdf - 以编程方式检查 PDF 文档中的比例信息?
- c - 进程执行的程序继承了什么?
- strapi - 连接测试失败:命令失败:npm install --prefix /tmp/strapi9a8613f466ed strapi-connector-bookshelf@3.6.3 knex@0.21.18 pg@8.5.1
- angular - 如何在 Angular 8 的 whatsapp 中集成元标记的动态预览?
- flutter - 编写一个程序,使用 Dart 以降序打印从 1 到 1000 的数字
- python - Python Spacy - “无法为模型 'layernorm' 设置未知维度 'nO'。”
- python - 脚本 .Sh 不在 Windows 中运行?
- http - Http Tunelling 真的安全吗?
- javascript - javascript:仅在结果准备好时更新 DOM