Powershell - Как заменить значение результатов запроса значением списка массивов - PullRequest
1 голос
/ 05 августа 2020

У меня есть сценарий PowerShell, в котором я собираю кучу данных и затем выводю их в отчет HTML. Один из разделов следующий:

$VPGSummaryInfo = Get-ZertoVPG | Select VPGName, Priority, Status, ProgressPercentage, ActualRPO | Sort-Object -Property VPGName
    
    $htmlbody += $VPGSummaryInfo | ConvertTo-Html -Fragment

Достаточно просто.

Я пытаюсь сделать и не могу понять, как изменить Приоритет, чтобы заменить результаты . Например, если приоритет равен 1, измените его на «Высокий».

Я пытался сделать что-то подобное, но это выдает ошибку (не в месте для проверки, но я считаю, что это был Ошибка нулевого выражения):

       
       $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       

Я полностью открыт для любого метода sh этого. У меня много разных сценариев ios, в которых мне нужно будет сделать аналогичные замены. Например, даже в приведенном выше коде я попытаюсь заменить статус на что-нибудь более читабельное.

Спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

На случай, если кто-нибудь из мира Zerto наткнется на это, вот что я в конечном итоге сделал, чтобы записать нужную информацию в более читаемый формат (используя решение @ mklement0)

$VPGSummaryInfo = Get-ZertoVPG | select VPGName,
  @{ Name = 'Priority'; Expression = { @{ 0 = "Low"; 1 = "Medium"; 2 = "High" }[$_.Priority] } },
  @{ Name = 'Status'; Expression = { @{ 0 = "Initializing"; 1 = "Meeting SLA"; 2 = "Not Meeting SLA"; 3 = "RPO Not Meeting SLA"; 4 = "History Not Meeting SLA"; 5 = "Failing Over"; 6 = "Moving"; 7 = "Deleting"; 8 = "Recovered" }[$_.Status] } },
  @{ Name = 'SubStatus'; Expression = { @{
        0 = "None"; 1 = "Initial Sync"; 2 = "Creating"; 3 = "Volume Initial Sync"; 4 = "Sync"; 5 = "Recovery Possible"; 6 = "Delta Sync"; 7 = "Needs Configuration"; 8 = "Error"; 9 = "Empty Protection Group";
        10 = "Disconnected From Peer. No Recovery Points"; 11 = "Full Sync"; 12 = "Volume Delta Sync"; 13 = "Volume Full Sync"; 14 = "Failing Over Committing"; 15 = "Failing Over Before Commit"; 16 = "Failing Over Rolling Back"; 17 = "Promoting"; 18 = "Moving Committing"; 19 = "Moving Before Commit";
        20 = "Moving Rolling Back"; 21 = "Deleting"; 22 = "Pending Remove"; 23 = "Bitmap Sync"; 24 = "Disconnected From Peer"; 25 = "Replication Paused - User Initiated"; 26 = "Replication Paused - System Initiated"; 27 = "Recovery Storage Profile Error"; 28 = "Unknown"; 29 = "Rolling Back";
        30 = "Recovery Storage Error"; 31 = "Journal Storage Error"; 32 = "VM Not Protected Error"; 33 = "Journal or Recovery Missing Error"; 34 = "Added VMs in Initial Sync"; 35 = "Replication Paused for Missing Volume"; 36 = "Stopping Fot Failure"; 37 = "Rolling Back FailOver Live Failure"; 38 = "Rolling Back Move Failure"; 39 = "Splitting Committing"; 40 = "Prepare Preseed" 
      }[$_.SubStatus] } 
  },
  @{ Name = 'Progress Percentage (%)'; Expression = { $_.ProgressPercentage } },
  @{ Name = 'Actual RPO (Sec)'; Expression = { $_.ActualRPO } } | Sort-Object -Property VPGName
              
$htmlbody += $VPGSummaryInfo | ConvertTo-Html -Fragment
1 голос
/ 05 августа 2020

Используйте вычисляемое свойство :

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 ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...