使用 powershell 更改变量特定文本并创建 table

Change variable specific text with powershell and create a table

我正在尝试更改包含 table 的变量中的一些词。

我能够使用带有 -replace 的 foreach 来完成它,但是我无法再次形成 table。

第一次尝试

$vms = Get-AZVm -status | Select-Object -Property Name, ResourceGroupName , PowerState 
$tabla = foreach ($item in $vms) {
$item.Name
$item.ResourceGroupName
$item.PowerState -replace 'VM Deallocated','Apagada' -replace 'VM running','Encendida' 
} | Format-Table

第二次尝试

$vms |foreach{$_.PowerState -replace 'VM Deallocated','Apagada' -replace 'VM running','Encendida'} | Select-Object -Property Name, ResourceGroupName , PowerState | format-table -autosize

我希望在替换 table 中的文本后保留与 table 相同的内容,而不是文本

我自己无法测试,但我认为使用计算的 属性 最简单:

$vms = Get-AzVM -status | 
       Select-Object -Property Name, ResourceGroupName, 
       @{Name = 'PowerState'; Expression = {($_.PowerState -replace 'VM Deallocated','Apagada') -replace 'VM running','Encendida'}} 

$vms | Format-Table -AutoSize

我会在数组中创建我的 table 并设置其内容...

$vms = Get-AZVm -status | Select-Object -Property Name, ResourceGroupName , PowerState 

$tabla = @{

    "Name" = ""
    "ResourceGroupName" = ""
    "PowerState" = ""

}

foreach ($item in $vms) {
    $record."Name" = $item.Name
    $record."ResourceGroupName" = $item.ResourceGroupName
    $record."PowerState" = $item.PowerState -replace 'VM Deallocated','Apagada' -replace 'VM running','Encendida' 
    $objRecord = New-Object PSObject -Property $record
    $tabla += $objRecord
}

$tabla