首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在devops管道中运行powershell脚本

在devops管道中运行powershell脚本
EN

Stack Overflow用户
提问于 2022-06-08 15:50:28
回答 1查看 128关注 0票数 0

我使用以下PS脚本(简化版本,但这里发生了错误)来标识过期的AppRegistrations:

代码语言:javascript
运行
复制
$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表示的输出:

代码语言:javascript
运行
复制
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管道中运行它时,我会得到以下错误:

代码语言:javascript
运行
复制
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不起作用。

你们知道是什么导致了这件事吗?我怎么能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 02:41:11

我测试了PowerShell脚本并得到了同样的问题。

造成此问题的原因是,在Azure的响应中,它没有名为objectId的字段。

预期的objectedId名称是ID。

因此,您需要将$_.objectId修改为$_.Id。同时,应该将$EndDate.endDate修改为$EndDate.endDateTime

下面是一个例子:

代码语言:javascript
运行
复制
$allapps = az ad app list --all | ConvertFrom-Json

$allapps | ForEach-Object {
    $app = $_
    @(
        $EndDate = az ad app credential list --id $_.id | ConvertFrom-Json
        $EndDate.endDateTime
    )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72548708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档