我正在序列化以下脚本片段的输出,$ VM包含与Get-VM一起存储的VM。
$("#ques_response").submit(function(){
$('#final-button').attr("disabled",true);
$('#popup-final-button').attr("disabled",true);
});
输出如下:
$VM.VMId | Get-VHD | Select @{N="Name";E={$VM.Name}},@{N="Disks";E={[math]::Round($_.Size/1GB,1)}}
但我想以某种方式序列化这个而不是给我:
Name Disks
---- -----
ServerXYZ 136,7
ServerXYZ 465,7
我徒劳地尝试添加-join" +"在这里和那里的代码都无济于事。
我后来谈到了这一点:
Name Disks
---- -----
ServerXYZ 136,7 + 465,7
这种方式接近于实际制作一个看起来像" ServerXYZ,136,7 + 465,7"的正确数据列表,但我需要将其格式化为数组或散列表键值对。
答案 0 :(得分:1)
这是一种方法:
$vm.VMId |
Get-VHD |
Select-Object @{N="Name";E={$VM.Name}},@{N="DiskSize";E={[math]::Round($_.Size/1gb,3)}} |
Group-Object Name |
ForEach-Object {
[PsCustomObject]@{
Name = $_.Name
Disks = $_.Group.DiskSize
}
}
这样输出如下:
Name Disks
---- -----
Server 1 {28.41, 0.223, 0.848, 0.816}
如果你真的想要' +'在中间,替换这一行:
Disks = $_.Group.DiskSize
使用:
Disks = ($_.Group.DiskSize -join ' + ')
这给出了:
Name Disks
---- -----
Server1 28.41 + 0.223 + 0.848 + 0.816