【问题标题】:How to automatically run a powershell script in azure?如何在 azure 中自动运行 powershell 脚本?
【发布时间】:2021-11-23 09:05:15
【问题描述】:

我正在将数据从 Azure 的 rest api 移动到一个 azure 存储帐户。我在 powershell 中使用调用 rest 和 azure powershell cmdlet 的组合执行以下操作。我基本上有一个小脚本:

  1. 获取访问令牌
  2. 获取数据
  3. 将数据放入存储帐户 blob

我需要做什么才能让它按计划在 azure 中运行,并让它自动将数据移动到存储帐户中?我能够让脚本自己运行,但问题是如何让脚本在我不在场的情况下运行。

【问题讨论】:

  • 如果发布的答案有帮助,您可以通过单击复选标记将其标记为答案。这样做可以帮助其他社区成员

标签: azure powershell rest automation


【解决方案1】:

创建 Powershell Runbook 之前的先决条件:

如果您想创建一个带有运行身份帐户的自动化帐户,您需要在您的订阅中具有Owner 角色,因为创建运行身份帐户(服务主体)时,它会自动将服务主体添加到您的订阅中作为Contributor,只需Owner即可。

但如果您只想在自动化帐户中使用 Runbook,则不需要 Owner 角色。您只需要求订阅中的Owner 为您创建一个带有 run as 帐户的自动化帐户,然后您就可以创建一个 powershell runbook 并运行您的命令。


1) 创建您的自动化帐户: Azure 门户 > 搜索“自动化帐户” > 创建 > 提供所需的数据,例如名称、订阅资源组、位置,然后选择创建 Azure 运行方式帐户选项为是

2:导入必要的 PowerShell 模块

您的自动化帐户 > 模块库(在左侧索引中)> 选择“SharePointPnPPowerShellOnline” > 单击“导入”按钮以导入模块。

3:为帐户运行添加凭据

  • 设置运行放置在 Azure 中的 PowerShell 脚本的凭据 自动化操作手册
  • 并连接到 SharePoint Online 租户,生成存储 报告所有网站,然后每天发送一封电子邮件。

(这里我采用了每天在预定时间发送邮件和指定邮件的示例脚本)

  • 在自动化帐户中,单击“Credentials”链接 快速启动 > 点击“添加凭据”按钮。提供任何有效的 具有必要访问权限的凭据。

在我的例子中,我使用了一个具有 SharePoint Online 管理员角色的帐户。单击“创建”按钮创建凭据。

4:使用 PowerShell 脚本创建 Runbook

Runbook 是我们要运行的脚本的容器。 Runbook 列出了所有已发布的可用于自动化的 Runbook。

  • 打开创建的 Azure 自动化帐户 >> 点击流程自动化下的“Runbooks”。
  • 单击“创建 Runbook”>> 指定名称并选择其类型为 PowerShell,然后单击“创建”按钮。

创建 PowerShell Runbook 后,它会将您带到编辑要运行的 PowerShell 脚本的页面。为自动化编写必要的 PowerShell 脚本。

下面是我给定的自定义 PowerShell 脚本

`#Get Stored Credentials`
`$CrescentCred`  `=` `Get-AutomationPSCredential`  `-Name`  `"StorageRptCred"`

`#Set Variables`
`$TenantAdminURL`  `=` `"https://xxxx-admin.sharepoint.com"`
`$EmailTo`  `=` `"xxxx@abc.com"`

`#Connect to PnP Online`
`Connect-PnPOnline`  `-Url`  `$TenantAdminURL`  `-Credentials`  `$xxxCred`

`$CSSStyle`  `=` `"<style>`
`table {font-family: Arial, Helvetica, sans-serif; border-collapse: collapse; width: 100%;}`
`table td, th {border: 1px solid #ddd; padding: 8px;}`
`table tr:hover {background-color: #ddd;}`
`table th { padding-top: 12px; padding-bottom: 12px; text-

align: left; background-color: #4CAF50; color: white;`}`</style>"

    #Get the Site collection Storage details
        Some code related to format of data
   #Send Email  
    `Send-PnPMail`  `-To`  `$EmailTo`  `-Subject`  `"Storage Report"`  `-Body`  `$EmailBody`  

单击“保存”保存并测试 PowerShell 脚本,然后单击“测试窗格”按钮代码编辑器。脚本完成后,单击“发布”以发布 Runbook,因为必须发布 Runbook 才能创建计划。

**5:向您的 PowerShell 脚本添加计划 **

作为最后一步,我们必须向 PowerShell 脚本添加一个计划。下面介绍了如何为 Azure Runbook 创建计划。

  • 从创建的 Runbook 中单击“计划” >> 单击“添加计划”链接。
  • 选择“将计划链接到您的运行手册” >> 单击“创建新计划 ”链接。
  • 为您的计划输入必要的详细信息,例如名称、描述、开始日期、时间、时区和重复详细信息。就我而言,计划将在给定时间每天运行,直到到期日。

好的,现在我们已经在 Azure 自动化中配置了 PowerShell 脚本。等待计划的作业运行,这是我的计划作业电子邮件:

【讨论】:

    【解决方案2】:

    我不是 Azure 专家,但我认为您正在寻找的是 Azure Automation。您可能想查看 this link 作为参考,但 ymmv 因为我不完全确定它在多大程度上适用于您的用例。

    【讨论】:

    • 请不要分享链接,您可以使用该链接中最重要的部分并解释如何应用它来解决问题,在这种情况下,该链接将有助于作为参考。
    【解决方案3】:

    Azure 自动化帐户中的 PowerShell Runbook 可以按计划或通过 webhook 执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      相关资源
      最近更新 更多