Après Kixtart, Perl et Python, voici le tour de PowerShell !
Je découvre ce langage de script proposé par Microsoft et disponible depuis XP jusqu'à 2008 Server R2.
Comme à mon habitude, je vais vous faire partager quelques bouts de code que j'ai assemblé.
Aucun script n'est parfait ! Grâce au mécanisme de gestion des exceptions, il est possible de prévoir quelles actions exécuter en cas de problèmes !
# Corps principal du script
try
{
Write-Host « boucle principale »
}
# on execute ce script si une erreur non prevue survient
catch
{
Write-Error
$_.Exception.ToString()
}
# on execute ce script quoi qu'il arrive
finally
{
Write-Host « boucle finale »
}
Voici le résultat de l'exécution de ce script dans l'excellent éditeur PowerGUI

Par contre, si génère une erreur (une division par 0, par exemple)…
# Corps principal du script
try
{
Write-Host « boucle principale »
# on génère une erreur fatale
$y
= 0
$x
= 5/$y
}
# on execute ce script si une erreur non prevue survient
catch
{
Write-Error
$_.Exception.ToString()
}
# on execute ce script quoi qu'il arrive
finally
{
Write-Host « boucle finale »
}
… le résultat est celui-ci.

Il est possible de générer des exceptions proprement avec la commande « throw ».
# Corps principal du script
try
{
Write-Host « boucle principale »
# on génère une erreur fatale
throw
"Une erreur !!!"
}
# on execute ce script si une erreur non prevue survient
catch
{
Write-Error
$_.Exception.ToString()
}
# on execute ce script quoi qu'il arrive
finally
{
Write-Host « boucle finale »
}

Du coup, on peut gérer très simplement l'absence de paramètres d'une fonction.
function
MaFonction
{
param($path
= $(throw
"il manque un paramètre"))
Write-Host « Dans Mafonction »
}
# Corps principal du script
try
{
Write-Host « boucle principale »
# on génère une erreur fatale
MaFonction
}
# on execute ce script si une erreur non prevue survient
catch
{
Write-Error
$_.Exception.ToString()
}
# on execute ce script quoi qu'il arrive
finally
{
Write-Host « boucle finale »
}

SynerGeek.fr Informatique & Veille Technologique
