【发布时间】:2015-11-06 20:34:05
【问题描述】:
我正在尝试在 PS 中整理数组。我试图解决的问题是返回一个复制的虚拟机列表和一些基本的统计数据。
阅读了大量网站和建议后,我能得到的最好的结果是以下脚本:
$myArray = @()
$vms = get-vm | where-object { $_.replicationstate -ne "Disabled" }
foreach ($vm in $vms)
{
$vmRepl = Get-VMReplication
$replfreq = (New-TimeSpan -seconds $vmRepl.replicationfrequencysec)
$lastrepl = $vmRepl.lastreplicationtime
$nextrepl = $lastrepl + $replfreq
$secfrom = [math]::Round((New-TimeSpan -start $vmRepl.lastreplicationtime).TotalSeconds)
$secto = [math]::Round((New-TimeSpan -end ($vmRepl.lastreplicationtime + $replfreq)).TotalSeconds)
$obj = New-Object System.Object
$obj | Add-Member -MemberType NoteProperty -Name Name -Value $vmRepl.Name
$obj | Add-Member -MemberType NoteProperty -Name ReplicationFrequencySec -Value $vmRepl.replicationfrequencysec
$obj | Add-Member -MemberType NoteProperty -Name SecondsSinceLastRepl -Value $secfrom
$obj | Add-Member -MemberType NoteProperty -Name SecondsUntilNextRepl -Value $secto
$obj | Add-Member -MemberType NoteProperty -Name LastReplication -Value $lastrepl
$obj | Add-Member -MemberType NoteProperty -Name NextReplication -Value $nextrepl
$myArray += $obj
}
write-output $myArray | ft -AutoSize
这在我只有一个 VM 时有效,但当有多个 VM 时,输出显示在花括号内。
我想我终于走上了正确的道路。我只需要有人帮我解决剩下的难题。
另一个奇怪的事情是 New-TimeSpan 停止使用多个 VM。
提前致谢。
布雷登
【问题讨论】:
-
我没看到你是怎么使用
$vm变量的。 -
您可以创建一个哈希表:
$obj = @{key0='val'; key1=3.14}并过滤管道:$array | select key0,key1 | ft -AutoSize
标签: powershell virtual-machine replication powershell-3.0 windows-server-2012-r2