Est-il possible de tester l'existence d'une variable à portée de script dans PowerShell?Comment tester l'existence d'une variable à portée de script dans PowerShell?
Je me sers de la PowerShell Community Extensions (PSCX) mais j'ai remarqué que si vous importez le module en Set-PSDebug -Strict
est, une erreur se produit:
The variable '$SCRIPT:helpCache' cannot be retrieved because it has not been set.
At C:\Users\...\Modules\Pscx\Modules\GetHelp\Pscx.GetHelp.psm1:5 char:24
Alors qu'il enquêtait sur la façon dont je pourrais résoudre ce problème, j'ai trouvé morceau de code dans Pscx.GetHelp.psm1:
#requires -version 2.0
param([string[]]$PreCacheList)
if ((!$SCRIPT:helpCache) -or $RefreshCache) {
$SCRIPT:helpCache = @{}
}
C'est assez directe au code; Si le cache n'existe pas ou doit être actualisé, créez un nouveau cache vide. Le problème est que l'appel $SCRIPT:helpCache
alors que Set-PSDebug -Strict
est en vigueur casse l'erreur car la variable n'a pas encore été définie.
Idéalement, nous pourrions utiliser une cmdlet Test-Variable
mais une telle chose n'existe pas! J'ai pensé à regarder dans le fournisseur variable:
mais je ne sais pas comment déterminer la portée d'une variable.
Donc ma question est: comment puis-je tester l'existence d'une variable pendant que Set-PSDebug -Strict
est en vigueur, sans provoquer d'erreur?
Si vous utilisez PowerShell 2.0, je vous recommande d'utiliser 'Set-StrictMode -version 2.0', car il détectera d'autres problèmes potentiels. –