【发布时间】:2021-05-26 01:45:37
【问题描述】:
我有兴趣查询 Azure 订阅以提供标记报告,该报告指示 VM 名称、Azure 区域以及每个 VM 的标记和标记值。
我当前的脚本为我提供了除每个标签的标签值之外的所有数据。我的输出显示的结果好像标签不存在。
有人对我的剧本有什么建议吗?谢谢!
参数( [参数(强制 = $true)] [字符串] $subscriptionName )
Select-AzSubscription -Subscription $subscriptionName
$allTags = 获取-AzTag
$allVMs = Get-AzVM
$vmInformation = @() foreach ($vm in $allVMs) {
$vmInformationObject = New-Object PSObject $vmName = $vm.Name $vmRegion = $vm.Location $vmInformationObject | Add-Member -MemberType NoteProperty -Name "VM_Name" -Value $vmName $vmInformationObject | Add-Member -MemberType NoteProperty -Name "VM_Region" -Value $vmRegion $vm_tags = $vm.tags foreach ($tag in $allTags) { $IfTagExists = $false foreach ($vmtag in $vm_tags) { if ($tag.name -like $vmtag.keys) { $IfTagExists = $true $vmInformationObject | Add-Member -MemberType NoteProperty -Name $tag.Name -Value $vmtag.$($tag.Name) break } } if ($IfTagExists -eq $false) { $vmInformationObject | Add-Member -MemberType NoteProperty -Name $tag.Name -Value "--" } } $vmInformation += $vmInformationObject }$vm信息 |导出-Csv "path.csv" -NoTypeInformation -Force
【问题讨论】:
-
$tag.name -like $vmtag.keys应该使用不同的运算符 -->$tag.name -in $vmtag.keys作为示例。您正在将单个值与值列表进行比较。因此,您需要一个比较列表中项目的运算符。 -
感谢您的帮助和建议。我修改了代码,结果在我的输出中填充了标记值。非常感谢!
标签: azure powershell tags virtual-machine tagging