2017-08-09 11 views
1

こんにちは、私は紺碧の中でpowershellスクリプトを実行し、最良のガイダンスを探していますか?Azureでパワーシェルスクリプトを実行する

私は紺碧に自律的に実行するには、このスクリプトをスケジュールするための最良のアプローチはどのようになるか、テキストファイルにリソースグループと出力のマシンを実行している見つけるために

を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のオートメーションを使用することができます。

今のところ、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 

は、我々はここで出力を見つけることができます:Azureの概要

enter image description here

スケジュールをRunbookの、我々はここでそれを設定できます。

enter image description here

Azureのオートメーションでランブックをスケジュールする方法の詳細は、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 Storage Account/Blob Containerにスクリプトを出力しようとしているので、どのようなアプローチをお勧めしますか? – BenAhm

+0

これらの作業はどれも、私はAzure Automationに固執します。モジュールのリストにAzureRM.Storageがあることを確認して、Automation RunBooksで使用できるようにしてください。 –

+0

Okありがとう! – BenAhm

0

私はPowerShellは、あなたの問題に対する最善の指針としてAzureのオートメーションをRunbookの推薦します。

PowerShellは

PowerShellのランブックは、Windows PowerShellに基づいているランブック。 Azureポータルのテキストエディタを使用して、ランブックのコード を直接編集します。 はオフラインのテキストエディタを使用して、Azure オートメーションにランブックをインポートすることもできます。利点

複雑なロジックをすべてPowerShellコードで実装し、 の複雑なPowerShell Workflowを使用しないでください。 Runbookは、実行する前に をコンパイルする必要がないため、PowerShell Workflowランブックよりも速く起動します( )。

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

あなたが望む時間と周波数で動作するようにPowerShellのランブックをスケジュールすることができます。

さらに、フリーティアを使用しており、合計ジョブ実行時間が1か月あたり500分未満の場合、Azure Automationの価格は無料です。多くのVMがなく、あなたの仕事の頻度がそれほど頻繁ではない場合、ほとんどの場合Azureで仕事を無料で行うことができます。

PowerShell runbookを使い始めるとよいチュートリアルです。

+0

ありがとう! – BenAhm

+0

@BenAhmこの回答が役に立ちましたら、私の努力を感謝します。 – juvchan

関連する問題