2017-08-09 2 views
1

Bonjour, je suis nouveau dans l'exécution de scripts Powerhell dans azure et vous recherchez les meilleurs conseils?Exécution d'un script de shell d'alimentation dans Azure

J'ai créé un script Powershell pour localiser les machines en cours d'exécution dans un groupe de ressources et la sortie vers un fichier texte,

quelle serait la meilleure approche pour planifier ce script pour fonctionner de façon autonome en bleu azur?

script ci-dessous:

#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 

Répondre

1

Comme l'a dit Bruno Faria, nous pouvons utiliser Azure Automation pour le faire. Mais pour l'instant, nous ne pouvons pas enregistrer la sortie du travail Runbook dans Azob Storage Blob direct. Pour contourner ce problème, nous pouvons vérifier la sortie dans le portail Azure. Script comme ceci:

$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 

Après ce travail de Runbook terminé, nous pouvons trouver la sortie ici:

enter image description here

A propos de Azure Runbook horaires, nous pouvons définir ici:

enter image description here

Pour plus d'informations sur la planification d'un runbook dans Azure Automation, reportez-vous à cette section article.

+0

Extrêmement utile, oui merci beaucoup! J'ai maintenant une approche de travail. – BenAhm

0

Azure Automation est ce que vous recherchez. C'est facile à utiliser et fonctionne très bien. En plus de cela, vous pouvez exécuter jusqu'à 500 minutes de script sur le niveau libre. Plus d'informations sur le lien suivant:

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

Si pour une raison quelconque vous voulez explorer d'autres options, il y a aussi des fonctions Azure et Azure Web Jobs.

Fonctions Azure:

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

Emploi Web:

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

+0

Extrêmement utile!, Puisque j'essaye de produire également le script sur un compte Azure Storage/Blob Container, quelle approche recommanderiez-vous? – BenAhm

+0

N'importe lequel de ces travaux, mais je resterais avec Azure Automation. Assurez-vous d'avoir AzureRM.Storage dans votre liste de modules pour pouvoir l'utiliser dans votre Automation RunBooks. –

+0

Ok Parfait merci! – BenAhm

0

Je recommande l'PowerShell Runbook dans Azure Automatisation comme les meilleurs conseils à votre problème.

PowerShell runbooks

runbooks PowerShell sont basées sur Windows PowerShell. Vous modifiez directement le code du runbook à l'aide de l'éditeur de texte dans le portail Azure.Vous pouvez également utiliser n'importe quel éditeur de texte hors ligne et importer le runbook dans Azure Automation. Avantages

Implémentez toute la logique complexe avec le code PowerShell sans les complexités supplémentaires de PowerShell Workflow. Runbook démarre plus rapidement que les runbooks PowerShell Workflow car il n'a pas besoin d'être compilé avant de s'exécuter.

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

Vous pouvez programmer votre PowerShell Runbook pour exécuter au moment et à la fréquence que vous désirez. En outre, le prix pour Azure Automation est GRATUIT si vous utilisez le niveau gratuit et que le temps total d'exécution des travaux est inférieur à 500 minutes par mois. Si vous n'avez pas beaucoup de machines virtuelles et que votre fréquence de travail n'est pas très fréquente, il est fort probable que vous puissiez obtenir vos travaux gratuitement dans Azure.

Voici un bon tutoriel pour débuter avec PowerShell runbook.

+0

super merci! – BenAhm

+0

@BenAhm Si cette réponse vous a été utile et que vous appréciez mes efforts, veuillez me le signaler comme utile. – juvchan