【问题标题】:Visual Studio Online Build and Release Azure PowershellVisual Studio Online 构建和发布 Azure Powershell
【发布时间】:2018-11-16 02:57:56
【问题描述】:

我们最初在一个 powershell 脚本中使用 Start-AzureWebsite 和 Stop-AzureWebsite 在发布之前在 Azure 中启动和停止 Web 应用程序。在 VSO 构建中,它使用 Azure Powershell,连接类型是 Azure Classic。 Microsoft 建议切换到使用 Azure 资源管理器的 Start-AzureRmWebApp 和 Stop-AzureRmWebApp。我们修改了构建中的 Azure Powershell 步骤,使其具有 Azure 资源管理器的连接类型,并选择了正确的订阅。当它使用脚本路径调用我们的外部脚本时,似乎没有将身份验证传递给脚本,我们收到错误“运行 Login-AzureRmAccount 登录”。当它尝试执行命令以启动/停止网站时。我们如何让身份验证持续到被调用的脚本?

【问题讨论】:

    标签: powershell azure build azure-devops


    【解决方案1】:

    原来我需要使用 Add-AzureRmAccount 而不是使用 Connect-AzureRMAccount,一旦我改变了,我现在可以连接和启动/停止应用服务!感谢您的帮助。 – 链接

    【讨论】:

      【解决方案2】:

      不知道为什么连接会丢失,如果你点源脚本来调用它,它应该可以工作。然而:

      我建议在 AAD 中创建一个与您的订阅相关联的服务主体,并授予它访问您的 Web 应用程序的权限。然后您应该使用现有 Azure App Service Manage 任务来启动/停止您的应用程序:

      顺便说一句,启动/停止/部署网络应用程序应该是发布定义/步骤的一部分 - 而不是构建。 -

      【讨论】:

      • 我们不使用 Azure 应用服务管理功能,因为它一次只允许它执行一项。我们有大约 15 个服务会停止/启动。使用 PowerShell,我们可以循环并创建作业,以允许它同时将它们全部启动,然后等待它们全部完成。通过这种方式,它缩短了大约 10 分钟的时间。至于 dotsourceing 脚本,我们使用 ScriptFilePath 的 Script Type 并指向我们在源代码控制中拥有的脚本。我不知道我们将如何 dotsource 呢?
      • 在这种情况下,我会将服务主体的 ClientId 和 ClientSecret 传递给每个使用需要身份验证和登录的 Azure cmdlet 的脚本。
      • 我曾尝试使用服务主体方法,但显然在某处缺少步骤。当我尝试通过 PowerShell 登录时,我收到以下错误消息 AADSTS50034:要登录此应用程序,必须将帐户添加到 cc0bbcdd-639b-4d8c-9dd7-9bf9b8873a99 目录。如果我使用该 ID 访问 Active Directory 并查看 AIM,我创建的服务主体就在其中,并具有贡献者访问权限。对错误的所有搜索都显示来自旧仪表板的旧结果。在哪里可以找到有关如何完成此操作的更多信息的任何指导?
      • 确保您使用正确的 cmdlet 进行身份验证,并且 ClientID 和 ClientSecret 正确。还要确保校长有权访问您要使用的资源。
      • 我正在使用 Connect-AzureRmAccount cmdlet 进行连接,并且还检查了其他项目(如果我更改客户端 ID 或客户端密码,我会收到不同的错误消息,关于 ID 和密码不是有效,所以很确定他们没问题),如果我转到有问题的订阅,然后单击访问控制 (AIM),服务主体被列为具有贡献者访问权限。如果我转到 Active Directory,我看不到任何显示服务主体访问的地方,它只显示用户,并且服务主体未列出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多