0

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

我能够使用带有 -replace 的 foreach 来做到这一点,但是我无法再次形成表格。

第一次尝试

$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

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

4

2 回答 2

2

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

$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
于 2019-09-11T13:18:44.670 回答
0

我会在一个数组中创建我的表并设置它的内容......

$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
于 2019-09-11T13:35:57.017 回答