2017-08-09 72 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