我尝试使用 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)"
}
}
我认为您使用的 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)"
}
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)"
}
}