Powershell脚本从标签获取uniq值

c3frrgcw  于 2023-04-06  发布在  Shell
关注(0)|答案(1)|浏览(141)

我有下面的查询和脚本从Azure中获取孤儿AVsets,我还添加了资源组标签“所有者”,以便可以获得资源的所有者及其预期的工作。
我需要有一些修改代码一样。我有3 AVset和所有者是相同的,如果我想自动化,它发送3个不同的邮件,所以我想有一个邮件和邮件消息中的所有resourcename。我无法排序-uniq
你能帮我理清基本逻辑吗
支持AV 1所有者是1 Av 2所有者也是1,因此在发送邮件时,它应该检查所有者并仅发送一封邮件而不是2封邮件。
PowerShell脚本
需要基本的逻辑,以便可以进一步修改

`$info = @()
#$subscriptionids = Get-AzSubscription
$subscriptionids = "subids"
foreach($subscriptionid in $subscriptionids){
    Select-AzSubscription -Subscription $subscriptionid
   
#AvailabilitySet
$as = "resources
    | where type has 'Microsoft.Compute/availabilitySets'
    | where properties.virtualMachines == '[]'
    | extend Details = pack_all()
    | project Resource=resourceGroup, name, type"
    $dt = Search-AzGraph -Subscription $subscriptionid -Query $as
    foreach($ct in $dt){
        $rdname = Get-AzResourceGroup $ct.Resource
        
         $info = new-object PSObject
         $info | Add-Member NoteProperty -Name "Resources" -Value $ct.name    
         $info | Add-Member NoteProperty -Name "RGname" -Value $ct.Resource
         $info | Add-Member NoteProperty -Name "ResourceType" -Value $ct.Type
         $info | Add-Member NoteProperty -Name "Tag" -Value $rdname.Tags.Owner 
         $info

    }
   
}`
rkkpypqq

rkkpypqq1#

继续我的评论。
在不知道您的电子邮件应该使用什么格式,或者Tag(owner)属性中有什么信息的情况下,您可以使用Group-Object向所有者发送一封电子邮件。

$ar | Group-Object Tag | ForEach-Object {
    # $_ represents the current group you are iterating
    # $_.Name will be the items 'Tag' property that has the Owner

    $mailArgs = @{
        # just guessing that Tag has the emailaddress of the owner
        # otherwise you need to find it using whatever is in there
        To         = $_.Name
        From       = 'you@yourcompany.com'
        SmtpServer = 'smtp.yourcompany.com'
        Subject    = 'orphan AVsets'
        Body       = $_.Group | Format-Table -AutoSize | Out-String
    }
    Send-MailMessage @mailArgs
}

相关问题