我有一个PowerShell脚本,在其中收集大量数据,然后输出到HTML报告。
以下各节之一:
$VPGSummaryInfo = Get-ZertoVPG | Select VPGName, Priority, Status, ProgressPercentage, ActualRPO | Sort-Object -Property VPGName
$htmlbody += $VPGSummaryInfo | ConvertTo-Html -Fragment
很简单。我正在尝试做且无法弄清的是如何更改优先级以替换结果。例如,当“优先级”为1时,将其更改为“高”。
我试图做这样的事情,但这给了我一个错误(不是可以验证的地方,但是我相信这是一个Null表达式错误):
$VPGInfo = @()
$VPGStatus = @{
1 = "High"; 2 = "Medium"; 3 = "Low"
}
$VPG = Get-ZertoVPG | Select VPGName, Priority, Status, ProgressPercentage, ActualRPO
$VPGStat = $VPGStatus[[int]$VPG.Priority]
$VPGObj = New-Object PSObject
$VPGObj | Add-Member NoteProperty -Name "VPG Name" -Value $VPG.VPGName
$VPGObj | Add-Member NoteProperty -Name "Priority" -Value $VPGStat
$VPGObj | Add-Member NoteProperty -Name "Status" -Value $VPG.Status
$VPGObj | Add-Member NoteProperty -Name "Replication Progress Percentage (%)" -Value $VPG.ProgressPercentage
$VPGObj | Add-Member NoteProperty -Name "Actual RPO (Sec)" -Value $VPG.ActualRPO
$VPGInfo += $VPGObj
$htmlbody += $VPGInfo | ConvertTo-Html -Fragment
我完全愿意采用任何方法来实现这一目标。在很多情况下,我都需要进行类似的替换。例如,即使在上面的代码中,我也将尝试将Status替换为更具可读性的内容。感谢您的任何建议。
最佳答案
Get-ZertoVPG | Select VPGName,
@{Name='Priority'; Expression={ @{ 1="High"; 2="Medium"; 3="Low" }[$_.Priority]}},
Status, ProgressPercentage, ActualRPO
注意:这假定原始.Priority
值是[int]
类型的(System.Int32
;使用Get-ZertoVPG | Get-Member Priority
进行验证)。
关于arrays - Powershell-如何用数组列表值替换查询结果值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63266839/