给定资源组下每个 Vm 的 VMSku 详细信息 excel sheet
VMSku detail of each Vm under given resource group in to excel sheet
我正在尝试在 azure devops 管道中使用 azure powershell 任务获取带有其余参数的 VM sku 详细信息。但不是 vmsku 详细信息,excel sheet 在 excel sheet 的所有列中显示“Microsoft.Azure.management.Compute.Models.HardwareProfile”。我在这里做错了什么。我希望得到像“Standard_m32ls”
这样的细节
注意:grep-wildcard 变量 alue 将通过管道传递
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"
我正在尝试在 azure devops 管道中使用 azure powershell 任务获取带有其余参数的 VM sku 详细信息。但不是 vmsku 详细信息,excel sheet 在 excel sheet 的所有列中显示“Microsoft.Azure.management.Compute.Models.HardwareProfile”。我在这里做错了什么。我希望得到像“Standard_m32ls”
这样的细节注意:grep-wildcard 变量 alue 将通过管道传递
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"