如何自动添加标签:CreatedBy和createdDate
我想做的是
我们的想法是创建一个预定的Runbook。它将每10分钟运行一次。这将获取所有未标记的资源,并将“CreatedBy”和“CreatedDate”标记应用于订阅中的所有资源。
我依赖于
第一个月
这就是我所做的。
$Appid = "Appid"
$PSWord = ConvertTo-SecureString -String "APPSecret" -AsPlainText -Force
$tenantID = "tenantID"
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Appid,$PSWord
Connect-AzAccount -Credential $Credential -Tenant $tenantID -ServicePrincipal -Subscription "SubID"
Set-AzContext -Tenant $tenantID
$resources = Get-AzResource
$currentTime = Get-Date
$endTime = $currentTime.AddDays(-7 * $cnt)
$startTime = $endTime.AddDays(-7)
$resources.foreach{
$resource = $_
$untaggedResources = $resource.Tags["createdBy","createdTime"]
if($untaggedResources -eq $null)
{
$creationTime = (Get-AzResourceGroup -Name $resource.ResourceGroupName).Resources |
Where-Object { $_.ResourceId -eq $resource.ResourceId } |
Select-Object -ExpandProperty Properties |
Select-Object -ExpandProperty CreatedTime
$owner = Get-AzLog -ResourceId $resource.ResourceId -StartTime $startTime -EndTime $endTime |
Where-Object {$_.Authorization.Action -like "*/write*"} |
Select-Object -ExpandProperty Caller |
Group-Object |
Sort-Object |
Select-Object -ExpandProperty Name
$resource.Tags.Add("createdBy", $owner)
$resource.Tags.Add("createdTime", $creationTime)
$resource | Set-AzResource -Force
}
}
字符串
我已经使用这个脚本创建了一个Runbook,脚本完成时没有任何错误。但是它没有按预期工作。
首先,它会在资源中更新createdTime。它会添加标记名为createdTime,但值只是显示为空白。
其次,createdBy正在更新,但是沿着用户电子邮件,它在字段中添加了额外的ID。
的数据
有没有可能的方法来实现这一点。
1条答案
按热度按时间nnt7mjpx1#
当我在我的环境中尝试相同的代码时,我总是收到
$owner
和$Creationtime
结果为空。这意味着这些变量不包含与资源相关的信息。为了解决这个问题,请使用
-ExpandProperties
和Get-AzResource
命令,详细说明如下。首先,要使用PowerShell获取
CreatedTime
,请使用:用途:字符串
的数据
型