在excel表中列出给定资源组下每个Vm的VMSku详细信息



Am正试图在azure devops管道中使用azure powershell任务获取VM sku的详细信息以及其余参数。但不是vmsku的详细信息,而是显示";微软Azure。管理。计算。模型。硬件配置文件";在excel表的所有列中。我在这里做错了什么。我希望得到诸如";Standard_m32ls";

注意:grep通配符变量value将通过管道

report = @()
$niclist = Get-AZNetworkInterface | Where-Object {$_ResourceGroupName -eq '*$(grp-wildcard)' } |Select-Object
$VM =Get-AzVm -Status | Where-Object {$_ResourceGroupName -eq '*$(grp-wildcard) '} |Select-Object
$power= $VM.powerstate
$vms = Get-AzVM | Where-Object {$_ResourceGroupName -eq '*$(grp-wildcard) '} |Select-Object
foreach($nic in $niclist){
Array = "" |Select-Object ResourceGroupName,ServerHostname,VMstatus,VMSKU
$Array.ResourceGroupName = $nic.ResourceGroupName
$Array.ServerHostName =$nic.VirtualMachine.Id
$Array.VMstate = $power[0]
$Array.VMSKU = $vms.HardwareProfile.VmSize[0]
}
$report+=$Array
$report |Format-Table ResourceGroupName,ServerHostname,VMstatus,VMSKU
$report | Export-Csv -NTI -path "$(BuildArtifactStagingDirectory)/test.csv"

此脚本获取的数据与您尝试执行的数据相同:

$rgName = ""
$vms = Get-AzVM -Status | Where-Object { $_.ResourceGroupName -eq $rgName }
$report = @()
foreach ($vm in $vms) {
$vmResult = @{
ResourceGroupName = $vm.ResourceGroupName
ServerHostName = $vm.Id
VmStatus = $vm.Powerstate
VmSku = $vm.HardwareProfile.VmSize
}
$report += $vmResult
}
$report | Export-Csv -Path "$(BuildArtifactStagingDirectory)/test.csv"

这看起来得到了您需要的

$rgName = ""
$report = @()
Get-AzVm -Status | Select-Object @{N="ServerHostName"; E={$_.VmId}}, Name, ResourceGroupName, @{N="VmSku"; E={$_.HardwareProfile.VmSize}}, @{N="VmStatus"; E={$_.Powerstate}} | Where-Object { $_.ResourceGroupName -eq $rgName } | ForEach-Object $vm { 
$report += $vm
}
$report | Export-Csv -Path "$(BuildArtifactStagingDirectory)/test.csv"

最新更新