我使用以下PS脚本(简化版本,但这里发生了错误)来标识过期的AppRegistrations:
$allapps = az ad app list --all | ConvertFrom-Json
$allapps | ForEach-Object {
$app = $_
@(
$EndDate = az ad app credential list --id $_.objectId | ConvertFrom-Json
$EndDate.endDate
)
}
当我在VS代码中本地测试它时,它工作得很好。
以VSCode表示的输出:
2022-01-25T11:51:11.205912+00:00
2024-02-21T12:52:11.542000+00:00
2023-06-17T11:54:30.328000+00:00
...
但是,我的目标是将这个脚本集成到Azure Devops管道中。要在devops中运行脚本,我使用devops 任务: AzureCLI@2,并使用服务连接登录。
当我在devops管道中运行它时,我会得到以下错误:
ERROR: argument --id: expected one argument
Examples from AI knowledge base:
az ad app credential list --id 00000000-0000-0000-0000-000000000000
list an application's password or certificate credentials (autogenerated)
看起来az应用程序凭证列表没有得到--id的输入。
当我再次在ConvertFrom-Json中运行相同的代码时,如果没有VSCode,就会得到相同的错误。因此,我怀疑这是因为ConvertFrom-Json不起作用。
你们知道是什么导致了这件事吗?我怎么能解决这个问题?
发布于 2022-06-09 02:41:11
我测试了PowerShell脚本并得到了同样的问题。
造成此问题的原因是,在Azure的响应中,它没有名为objectId的字段。
预期的objectedId名称是ID。
因此,您需要将$_.objectId
修改为$_.Id
。同时,应该将$EndDate.endDate
修改为$EndDate.endDateTime
。
下面是一个例子:
$allapps = az ad app list --all | ConvertFrom-Json
$allapps | ForEach-Object {
$app = $_
@(
$EndDate = az ad app credential list --id $_.id | ConvertFrom-Json
$EndDate.endDateTime
)
}
https://stackoverflow.com/questions/72548708
复制相似问题