gpt4 book ai didi

azure - 如何使用 Get-AzVM 输出订阅名称

转载 作者:行者123 更新时间:2023-12-03 02:22:54 26 4
gpt4 key购买 nike

我目前正在尝试输出不符合策略的虚拟机列表,一切正常,只是我不知道如何输出虚拟机所在的订阅,因为它不是 Get-AzVm 的属性。如果有人可以帮助我,我很尴尬我无法弄清楚,因为它看起来很简单。当前输出将使用所有虚拟机的最后一个订阅上下文,即使我有多个订阅。非常感谢!

$vmsNotBackedUp = @()
$vms_results = @()
$subscriptions = Get-AzSubscription

#set policy definition
$poldef = '013e242c-8828-4970-87b3-ab247555486d'


#Get VMs resource ID that are not backed up from Azure Policy, store in $resourceIDs variable

foreach ($sub in $subscriptions) {
Set-AzContext -Subscription $sub.Id



$resourceIDs =(Get-AzPolicyState -Filter "PolicyDefinitionName eq '$poldef' and ComplianceState eq 'NonCompliant'").ResourceId
$vmsNotBackedUp += Get-AzVM | Where-Object{$_.Id -in $resourceIDs}
$currentContext = $sub.Name
$currentContext
}


Write-Output("The Following VMs were not able to be backed up, may need investigation")

#$vmsNotBackedUp|Select-Object -Property Name,ResourceGroupName,Location

foreach ($vm in $vmsNotBackedUp) {
$output_data = [PSCustomObject]@{
vmName = $vm.Name
ResourceGroup = $vm.ResourceGroupName
vmLocation = $vm.Location
vmOS = $vm.StorageProfile.OsDisk.OsType
vmSub = $currentContext

}
$vms_results += $output_data
}


最佳答案

由于您已在 $sub.Id 中拥有订阅 ID,因此您可以将其作为属性添加到脚本中枚举的虚拟机中。像这样的事情:

$vmsNotBackedUp += Get-AzVM |
Where-Object{$_.Id -in $resourceIDs} |
Add-Member -MemberType NoteProperty -Name 'Subscription' -Value $sub.id -PassThru

关于azure - 如何使用 Get-AzVM 输出订阅名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68181274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com