查询多个CSV并计算包含X个文件的数量

时间:2019-05-29 16:34:52

标签: powershell

我们需要一种方法来跟踪虚拟服务器已关闭电源的时间。每周运行一次脚本,以收集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')}

        }
        }

0 个答案:

没有答案