Comment vérifier qu'une chaine de caractères (string) n'est pas nulle (Null) ou vide (Empty) en PowerShell ?

Le langage PowerShell est un langage créé par Microsoft pour accompagner le logiciel PowerShell. Il permet d'automatiser des tâches compliquées pour faciliter l'administration des ordinateurs. Même si ce n'est pas son but premier, on peut même créer des interfaces graphiques en développant avec ce langage. Pour vérifier qu'une chaîne n'est pas nulle ou vide, le langage fournit ses propres méthodes.

Avec le langage PowerShell, la classe "String", représentant les chaînes de caractères, fournit ses propres méthodes. L'une d'entre elles effectue exactement ce contrôle : il s'agit de la méthode "IsNullOrEmpty". Elle retourne true si la chaîne est nulle ou vide ou bien false dans le cas contraire.

if ([string]::IsNullOrEmpty($maChaine)) {
    Write-host "Ma Chaîne est nulle ou vide."
}

Pour contrôler qu'une chaîne ne soit ni nulle ni vide, il suffit d'inverser le test effectué plus haut. Pour cela, le langage PowerShell fournit deux opérateurs possibles : "!" et "-not".

if (![string]::IsNullOrEmpty($maChaine)) {
    Write-host "Ma Chaîne n'est ni nulle ni vide."
}
if (-not ([string]::IsNullOrEmpty($maChaine))) {
    Write-host "Ma Chaîne n'est ni nulle ni vide."
}

Une notation rapide consiste à utiliser l'opérateur "!" à côté de la variable. Le contenu de la chaîne sera alors transformé en booléen pour être testé. Une chaîne vide ou nulle vaut "false" donc cela fonctionne, mais il faut faire attention au fait que d'autres valeurs peuvent donner également "false", à savoir 0 ou "0".

if (!$maChaine) {
    Write-host "Ma Chaîne n'est ni nulle ni vide mais peut-être égale à 0."
}