我们需要一种方法来跟踪虚拟服务器已关闭电源的时间。每周运行一次脚本,以收集vcenter中的所有虚拟机。字段之一称为电源状态。我正在编写脚本以使用最新文件并导入所有PoweredOff VM。然后,我想查询较旧的报告,并计算虚拟机在PoweredOff的电源状态下显示的文件数。
从本质上讲,这将为我提供VM关闭几周的时间。
public sealed class RetryExponential : Microsoft.ServiceBus.RetryPolicy
此操作的结果目前为我提供两列“ VM名称和电源状态”。找到的虚拟对象正在显示(多次表示在多个文件中找到),我不确定该如何做,但我相信我在查询中需要一个Measure-Object。
这是我要实现的目标:
$source = "C:\inetpub\wwwroot\CSV-Reports-Archive"
# get latest vmreport powered off virtuals
$latest = Get-ChildItem -Path $source | Where-Object {$_.name -like "vmreport*"} | Sort-Object lastaccesstime -Descending | Select-Object -ExpandProperty fullname -First 1
# gather all of the powered off virtuals
$objects = Import-Csv $latest | Select 'vm name', 'power state' | Where-Object {$_.{power state} -eq 'poweredOff'}
# get the rest of the vmreports
$history = Get-ChildItem -Path $source | Where-Object {$_.name -like "vmreport*"} | Sort-Object lastaccesstime | Select-Object -ExpandProperty fullname -SkipLast 1
# search the history of present powered off virtuals
$findings = foreach($file in $history){
foreach($virtual in $objects.{vm name}){
Import-Csv $file | Select 'vm name', 'power state' | Where-Object {($_.{vm name} -Match $virtual)-and($_.{power state} -eq 'poweredoff')}
}
}