获取一年前创建的 Azure 资源中的所有者详细信息

问题描述 投票:0回答:1

我尝试使用 powershell 脚本获取一年前创建的资源所有者的详细信息,但出现错误。可以创建一个吗?

这是我使用的代码:

foreach ($resource in $resources) { 
    $createdBy = $resource.Properties.createdBy 
    if ($createdBy -and $createdBy.userPrincipalName) { 
        $ownerDetails = Get-AzADUser -UserPrincipalName $createdBy.userPrincipalName 
        Write-Host "Resource: $($resource.Name), Created by: $($ownerDetails.DisplayName) - $($ownerDetails.UserPrincipalName)" 
    }
}
list azure-resource-manager azure-powershell kql azure-resource-graph
1个回答
0
投票

我认为您使用的 PowerShell 脚本可以很好地满足您的要求。但如果

creationdate/time
不包含有关所有者身份的正确信息,它可能无法按预期工作。

而是使用

createdby
检索确切的要求,如下所示。

高效的脚本:

$date = (Get-Date).AddYears(-1)
$resource = Get-AzResource | Where-Object { $_.Properties.createdTime -lt $date }

foreach ($res in $resource) {
    Write-Output "ResourceID: $($res.ResourceId), Createdby: $($res.Properties.CreatedBy)"
}

enter image description here

或者,您也可以使用

Get-AzLog
命令来获取上述所需信息,详细信息如下。

$startTime = (Get-Date).AddYears(-1)
$endTime = Get-Date
$logs = Get-AzLog -StartTime $startTime -EndTime $endTime -Status "Started" -Resourceprovider "Microsoft.Resources/deployments"
foreach ($log in $logs) {
    $user = $log.Claims["http://schemas.microsoft.com/identity/claims/objectidentifier"]
    if ($user) {
        $info = Get-AzADUser -ObjectId $user
        Write-Host "Resourceinfo:$($log.ResourceId), Created by: $($info.DisplayName) - $(info.UserPrincipalName)"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.