使用PowerShell汇总平均信息

时间:2019-06-12 12:05:11

标签: powershell

我需要在所有成功完成备份但每周执行一次的虚拟机中占一定比例,但是我在这方面还很陌生,并且没有使用PowerShell进行任何课程或培训。

它已经每天都在工作,但我想要总结所有内容,并在进行备份的所有VM中占一定比例。

我希望脚本每24小时启动一次,每周一次报告,每7天发送一次有关结果的邮件。我已经做了邮件部分,但其余部分我不知道该怎么做。

编辑

我已经每天都做普通的脚本。

$success_rate = 100 - ($nbckp_vms * 100 / $total_vms)

但是现在我有7天了,我想执行7次此操作,将结果每天保存在.txt文件中,然后在第7天,每周获得成功率。 因此,我当然知道它类似于“所有结果/结果数* 100”之类的东西,但是,我实际上无法在PowerShell脚本上实现此功能。

我在脚本的这一部分中具有以下信息:

# Check backup

$body = "*** VMs not backed up last night ***" + "`r`n" + "`r`n"
$total_vms = 0
$nbckp_vms = 0

foreach ($i in $csv1) {
    $total_vms++
    $VM = $i.VM
    $backup = $i.backup
    $today = Get-Date -Format "M/d/yyyy"
    $yesterday = (Get-Date).AddDays(-1).ToString("M/d/yyyy")

    try {
        if ($backup -notlike "*$yesterday*" -and `
            $backup -notlike "*$today*" -and `
            $backup -notlike "No backup*" -and `
            $backup -notlike "TiNa backup*"
        ) {
            #Write-Output "$VM have not been backuped last night."
            $nbckp_vms++
            $body = $body + "$VM" + "`r`n"
        }
    } catch {
    }
}

我想要的是每周寄给我自己一封有关成功备份虚拟机的百分比的邮件。这是普通邮件的样子:

*** VMs not backed up last night ***

Machine1
Machine2
Machine3
Machine4
Machine5
Machine6
Machine7
Machine8
Machine9
Machine10
Machine11
Machine12
Machine13
Machine14
Machine15
Machine16
Machine17
Machine18
Machine19
Machine20
Machine21
Machine22
Machine23
Machine24
Machine25
Machine26
Machine27
Machine28
Machine29
Machine30
Machine31
Machine32
Machine33
Machine34

*** Backup success rate for production KPIs ***

Daily success rate = 94.28%
Total VMs = 594
Daily unbacked up VMs = 34

邮件系统运行良好,但我只想每周一次。

(我给虚拟机起了通用名称)

这是我到目前为止尝试过的:

$success_rate_weekly = 100 - (($text[1] += $text[2] += $text[3] += $text[4] += $text[5] += $text[6] += $text[7]) /= 7

get-content "E:\PS\Malik\valeurs.txt" | foreach { -split $_ | select -index 4 } | measure -sum 

我在一个法语论坛上找到了最后一个,但是这两行都不适合我。

1 个答案:

答案 0 :(得分:0)

(代表问题作者发布)

感谢Ansgar Wiechers,他给了我运行两个脚本的想法,而对于我在互联网上发现的一些愚蠢的东西,这就是我所拥有的:

首先,我使用Windows Task Scheduler每天运行我的第一个脚本并恢复我的每日信息。我还使用WTS每月运行我的第二个脚本,该脚本每月将在清除.txt文件的内容之前占一定比例

我用了这一行:

$success_rate_weekly = get-content "E:\PS\Malik\valeurs.txt" | measure -average | select -expand average

这一行帮助我计算了成功备份虚拟机的平均值。