我有两个PowerShell脚本:
每天平均备份的虚拟机数量并将其保存到.txt文件中:
render() {
console.log("foo");
return (
....
使用此.txt文件的值每月平均一次。
有问题。问题出在这部分。
我想对这两个脚本进行升级,其中包括平均VM数量和非备份VM的平均数量。所以我做到了:
$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"
但是由于该脚本每个月启动一次,所以我无法像“ moy,nb_total_vms,nbackedup_vms”那样做第一行,但是我有值,然后是这行。如果我将其放在其他脚本中,则每行都会这样:
value moy,nb_total_vms,nbackedup_vms value moy,nb_total_vms,nbackedup_vms
以此类推。
我想总是在我的.txt文件的第一行上写这一行(moy,nb_total_vms,nbackedup_vms)。
答案 0 :(得分:2)
首先不要使用*-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
答案 1 :(得分:1)
看,标题的答案:
(Get-Content "your.txt" -TotalCount 1) | Set-Content "your.txt"