Eh ben après pas mal de déboire voici une commande et un script fonctionnels !!!
Prérequis:
- Xampp (le service Apache suffit, version portable 1.8.2.4 par exemple)
- PowerCLI 5.5.0 pour l'interface avec PowerShell (déja présent sur Windows7)
Pour le script PHP
- Code : Tout sélectionner
<?php
if(isset($_GET["syno"]))
{
$syno=$_GET["syno"];
if($syno=="on") exec('powershell.exe -ExecutionPolicy RemoteSigned -command D:\scripts\Pwron_syno.ps1');
if($syno=="off") exec('powershell.exe -ExecutionPolicy RemoteSigned -command D:\scripts\Pwroff_syno.ps1');
}
?>
la variable "syno" correspond au nom de la machine a controller
(Dans notre exemple une VM avec un OS SYNOLOGY virtualisé)
Pour le script Powershell ON:
- Code : Tout sélectionner
Add-PSSnapin VMware.VimAutomation.Core
$vcenter="192.168.1.1"
$strNewVMName = "VM_SYNO_001"
#Connect to vcenter server
connect-viserver $vcenter -User 'root' -Password 'pass'
#Generate a view for vm to determine power state
$vm = Get-View -ViewType VirtualMachine -Filter @{"Name" = $strNewVMName}
if ($vm.Runtime.PowerState -ne "PoweredOn") {
Write-Host "Powering On $strNewVMName ----"
Get-VM $strNewVMName | Start-VM
Sleep 10
}
write-host "Sleeping ..."
Sleep 120
#Disconnect to vcenter server
disconnect-viserver $vcenter -Confirm:$false
$vcenter= Adresse IP du serveur ESXi
$strNewVMName = Nom de la VM
-User 'root' -Password 'pass' (nom et mot de passe du compte existant sur ESXi)
Pour le script Powershell OFF:
- Code : Tout sélectionner
Add-PSSnapin VMware.VimAutomation.Core
$vcenter="192.168.1.1"
$strNewVMName = "VM_SYNO_001"
#Connect to vcenter server
connect-viserver $vcenter -User 'root' -Password 'pass'
#Generate a view for vm to determine power state
$vm = Get-View -ViewType VirtualMachine -Filter @{"Name" = $strNewVMName}
#If vm is powered on then VMware Tools status is checked
if ($vm.Runtime.PowerState -ne "PoweredOff") {
if ($vm.config.Tools.ToolsVersion -ne 0) {
Write-Host "VMware tools installed. Graceful OS shutdown ++++++++ $strNewVMName ----"
Shutdown-VMGuest $strNewVMName -Confirm:$false
}
else {
Write-Host "VMware tools not installed. Force VM shutdown ++++++++ $strNewVMName ----"
Stop-VM $strNewVMName -Confirm:$false
}
}
write-host "Sleeping ..."
Sleep 120
#Disconnect vcenter server
disconnect-viserver $vcenter -Confirm:$false
Ps: Dans PowerShell vérifier l'état de la sécurité avec :
- Code : Tout sélectionner
get-executionPolicy
Si "Restricted" alors entrer
- Code : Tout sélectionner
set-executionPolicy RemoteSigned
et enfin vérifier avec
- Code : Tout sélectionner
get-executionPolicy
Et enfin la requête Eedomus :
Créer une requête HTTP actionneur
Créer deux valeurs dans valeurs :
Dans les valeurs en URL:
- Code : Tout sélectionner
http://192.168.1.xxx/scripts/script.php
Et dans les paramètres
- Code : Tout sélectionner
?syno=on
et dans la seconde
- Code : Tout sélectionner
?syno=off
192.168.1.xxx correspond au nom de machine qui utilise Xampp avec les scripts powershell et php
/scripts/script.php correspond au chemin ou se trouve le script php (dossier htdocs dans Xampp)
Si vous avez d'autres questions...