Question Script powershell sur linux via cronjob

Plus d'informations
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30173 par Jerôme
Hello,

Je viens ici car j'ai un soucis avec mes script powershell sur linux.

J'ai un projet php (symfony) qui tourne sur un serveur ubuntu.
Ce projet gère entre autres des machines virtuelles sur Azure.

Pour automatiser certaines actions, j'ai crée des commandes linux qui exécutent des scripts powershell.
Lorsque j'exécute une commande dans la console de mon serveur
php bin/console azure:restart
tout fonctionne bien.

J'ai donc automatiser l'exécution de ces commandes avec CRON.
Or lorsqu'elles sont exécutés via cron, cela ne fonctionne pas...

Voici mon script qui permet d'éteindre une machine :
$tenantId = "##########"

$userName = "########"
$password = ConvertTo-SecureString '##########' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ($userName, $password);

Connect-AzAccount -ServicePrincipal -Credential $Credential -Tenant $tenantId

function StopVM($name)
{
    write-host "Start : stop vm"
    Stop-AzVM -ResourceGroupName "GROUP" -Name $name -Force
    write-host "End : stop vm"
}

function StartVM($name)
{
    write-host "Start : start vm"
    Start-AzVM -ResourceGroupName "GROUP" -Name $name
    write-host "End : start vm"
}

$global:name = $args[0]

StopVM($name)
Start-Sleep -Seconds 30
StartVM($name)


Lorsque la commande
php bin/console azure:restart
est exécuté via cron, voici l'output.
Start : stop vm
End : stop vm
Start : start vm
End : start vm
Il n'y a pas l'output des commandes permettant d'arrêter et démarrer les vm.

Lorsque c'est lancé directement dans la console :
Start : stop vm
Account                              SubscriptionName   TenantId
-------                              ----------------   --------               
### Abonnement Azure 1 ####

OperationId : ###
Status      : Succeeded
StartTime   : 11/10/2020 18:14:44
EndTime     : 11/10/2020 18:15:35
Error       : 
Name        : 

End : stop vm
Start : start vm

OperationId : ####
Status      : Succeeded
StartTime   : 11/10/2020 18:16:05
EndTime     : 11/10/2020 18:17:29
Error       : 
Name        : 

End : start vm


Je précise que tout est bien lancé avec le même user.

D'avance merci si vous avez une idée parce que ca fait au moins deux semaines que je sèche :huh:
Dernière édition: il y a 3 ans 5 mois par Jerôme.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30187 par Arnaud Petitjean
Bonjour Jérôme,

Ton cas d'usage est très intéressant car pas très commun.

Je vois que tu utilises un argument dans ton script ($args[0]), qui d'après ce que je comprends est le nom de la machine que tu souhaites arrêter/démarrer.
Or je n'ai du mal à voir sur la ligne de commandes où est-ce que tu donnes le nom de la machine.

Est-ce "azure:restart" ? Ta VM s'appelle "azure" ?

Par ailleurs, tu devrais peut-être t'assurer que la commande "Connect-AzAccount" fonctionne bien avant d'exécuter la suite de ton script ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.066 secondes
Propulsé par Kunena