2017-08-09 154 views
1

嗨,我还没有在Azure中运行PowerShell脚本并寻找最佳指导?在Azure中运行Power Shell脚本

我创建了一个PowerShell脚本来定位一个资源组,并输出到一个文本文件,跑步机,

这将是最好的办法安排此脚本在蔚蓝的自主运行?

以下脚本:

#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 

回答

1

布鲁诺法利亚说,我们可以使用Azure的自动化来做到这一点。

但是现在,我们无法将运行手册作业的输出保存到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 

这个运行手册的工作完成后,我们可以发现输出这里:

enter image description here

关于Azure的运行手册时间表,我们可以在这里设置:

enter image description here

有关在Azure自动化中安排Runbook的更多信息,请参阅此article

+0

非常有帮助,是的非常感谢你!我现在有一个工作方法。 – BenAhm

0

Azure的自动化是你在找什么。它很容易使用,效果很好。除此之外,您可以在免费套餐上运行长达500分钟的脚本。以下链接更多信息:

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

如果你想探索其他选项的一些原因,也Azure的功能和Azure的网上工作。

Azure的功能

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

+0

非常有帮助!,因为我试图将脚本输出到Azure存储帐户/ Blob容器,您会推荐什么方法? – BenAhm

+0

任何这些工作,但我会坚持使用Azure自动化。只要确保您的模块列表中包含AzureRM.Storage即可在Automation RunBook中使用它。 –

+0

好完美谢谢! – BenAhm

0

我会推荐PowerShell运行手册Azure自动化作为您的问题的最佳指导。

PowerShell的运行手册

PowerShell的运行手册是基于Windows PowerShell。您可以使用Azure门户中的文本编辑器直接编辑Runbook的代码 。您还可以使用任何脱机文本编辑器并将该运行手册导入Azure 自动化。优点

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

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

你可以安排你的PowerShell运行手册到你想要的时间和频率运行。

此外,如果您使用免费套餐且您的总工作时间低于每月500分钟,则Azure自动化的定价为免费。如果您的虚拟机数量不多,而且您的工作频率不太常见,那么很可能您可以在Azure中免费完成您的工作。

下面是一个很好的教程,开始使用PowerShell runbook

+0

非常感谢你! – BenAhm

+0

@BenAhm如果这个答案对你有帮助,并且你很欣赏我的努力,请恳请注意这是有帮助的。 – juvchan