如何在 azure 中自动 运行 一个 powershell 脚本?

How to automatically run a powershell script in azure?

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

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

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

我不是 Azure 专家,但我认为您正在寻找的是 Azure Automation. You might want to check out this link 作为参考,但是 ymmv,因为我不完全确定它在多大程度上适用于您的用例。

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

创建 powershell 之前的先决条件 运行book:

如果您想创建一个使用 运行 作为帐户的自动化帐户,您需要在您的订阅中具有 Owner 角色,因为在创建 运行 作为帐户时(服务主体), 它会自动在你的订阅中添加服务主体作为 Contributor, 它可以用 Owner.

完成

但是如果您只想在自动化帐户中使用 运行book,则不需要 Owner 角色。您只需要在您的订阅中要求 Owner 为您创建一个自动帐户 运行 作为您的帐户,然后您将能够创建一个 powershell 运行book 和 运行 你的命令。


1) 创建您的自动化帐户: Azure 门户 > 搜索“Automation Account” > 创建 > 提供所需的数据,例如名称、订阅资源组、位置和 Select将 Create Azure 运行 As Account 选项设为是

2:导入必要的 PowerShell 模块

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

3:将 运行 的凭据添加为帐户

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

(这里我取了每天定时发送邮件的Sample脚本和指定的邮件)

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

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

4:使用 PowerShell 脚本创建 运行书籍

运行book 是我们要运行 的脚本容器。 运行本书列出了所有已出版的运行可用于自动化的书籍。

  • 打开创建的Azure Automation账户>>点击process automation下的“运行books
  • 点击“创建一本运行图书” >> 指定名称和select其类型作为 PowerShell 并单击“创建”按钮。

创建 PowerShell 运行 书籍后,您将进入将 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 脚本,然后单击“” test pane”按钮代码编辑器。完成脚本后,单击“发布”以发布 运行 图书,因为 运行 图书必须发布创建时间表。

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

作为最后一步,我们必须向 PowerShell 脚本添加一个计划。以下是如何为 Azure 运行本书创建计划。

  • 点击Schedules”从创建的运行书中>>点击“ 添加时间表”link.
  • 选择“Link 您的 运行book 的日程安排” >> 点击“创建新计划” link.
  • 为您的日程输入必要的详细信息,如名称、描述、开始日期、时间、时区和重复详细信息。在我的例子中,时间表将在指定时间每天 运行 直到到期日。

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