1

嗨,我是在 azure 中运行 powershell 脚本并寻找最佳指导的新手?

我创建了一个 powershell 脚本来定位资源组中正在运行的机器并输出到一个文本文件,

安排此脚本在 azure 中自主运行的最佳方法是什么?

下面的脚本:

#Login-AzureRmAccount 
#$sub = Get-AzureRmSubscription | Out-GridView -PassThru | Set-AzureRmContext

$path="dcsppomsstorage.blob.core.windows.net/dcsvmpowerstate/activeserver1.txt"
function SPWservers {

[string]$ResourceGroupName = "*DCS-PP*"


$VMresourcegroups = (Get-AzureRmResourceGroup).Where({$_.ResourceGroupName -like $ResourceGroupName})
foreach($VMresourcegroup in $VMresourcegroups){
$vms=Get-AzureRmVM -ResourceGroupName $VMresourcegroup.ResourceGroupName
foreach ($vm in $vms)
{

$Status = (get-azurermvm -ResourceGroupName $VMresourcegroup.ResourceGroupName -Name $vm.Name -Status).Statuses

Write "powerstate for $($vm.Name) is $($Status[1].DisplayStatus)" | Format-Table $vm.Name, $Status[1].DisplayStatus -GroupBy $vm.name

}
}
}




SPWservers| out-file $path
4

3 回答 3

1

正如 Bruno Faria 所说,我们可以使用 Azure 自动化来做到这一点。

但目前,我们无法将 Runbook 作业的输出直接保存到 Azure 存储 blob。

作为一种解决方法,我们可以检查 Azure 门户中的输出。像这样的脚本:

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
function SPWservers {
[string]$ResourceGroupName = "vms"
$VMresourcegroups = (Get-AzureRmResourceGroup).Where({$_.ResourceGroupName -like $ResourceGroupName})
foreach($VMresourcegroup in $VMresourcegroups){
$vms=Get-AzureRmVM -ResourceGroupName $VMresourcegroup.ResourceGroupName
foreach ($vm in $vms)
{

$Status = (get-azurermvm -ResourceGroupName $VMresourcegroup.ResourceGroupName -Name $vm.Name -Status).Statuses

Write "powerstate for $($vm.Name) is $($Status[1].DisplayStatus)" | Format-Table $vm.Name, $Status[1].DisplayStatus -GroupBy $vm.name

}
}
}

SPWservers| write-output

此 Runbook 作业完成后,我们可以在此处找到输出

在此处输入图像描述

关于 Azure Runbook schedules,我们可以在这里设置:

在此处输入图像描述

有关在 Azure 自动化中调度 Runbook 的更多信息,请参阅本文

于 2017-08-09T06:52:23.257 回答
1

我会推荐Azure 自动化中的PowerShell Runbook作为解决问题的最佳指南。

PowerShell 运行手册

PowerShell Runbook 基于 Windows PowerShell。使用 Azure 门户中的文本编辑器直接编辑 Runbook 的代码。你还可以使用任何脱机文本编辑器并将 Runbook 导入 Azure 自动化。好处

使用 PowerShell 代码实现所有复杂逻辑,而无需 PowerShell 工作流的额外复杂性。Runbook 的启动速度比 PowerShell Workflow Runbook 快,因为它不需要在运行前进行编译。

https://docs.microsoft.com/en-us/azure/automation/automation-runbook-types#powershell-runbooks

您可以安排您的 PowerShell Runbook 在您希望的时间和频率上运行。

此外,如果您使用免费层并且您的总作业运行时间每月低于 500 分钟,Azure 自动化的定价是免费的。如果您没有很多 VM 并且您的工作频率不是很频繁,那么您很可能能够在 Azure 中免费完成您的工作。

这是开始使用PowerShell runbook的一个很好的教程。

于 2017-08-09T07:04:57.670 回答
0

Azure 自动化正是您所寻找的。它易于使用并且效果很好。除此之外,您可以在免费层上运行长达 500 分钟的脚本。有关以下链接的更多信息:

https://docs.microsoft.com/en-us/azure/automation/automation-offering-get-started

如果出于某种原因您想探索其他选项,还有 Azure Functions 和 Azure Web Jobs。

天青功能

https://blogs.msdn.microsoft.com/powershell/2017/02/24/using-powershell-modules-in-azure-functions/

网络工作

https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-create-web-jobs

于 2017-08-09T06:36:34.140 回答