Можно ли проверить наличие переменной Scope в PowerShell?Как проверить наличие переменной Scope в PowerShell?
Я с помощью PowerShell Community Extensions (PSCX), но я заметил, что если импортировать модуль во время Set-PSDebug -Strict
установлен, производится ошибка:
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
Исследуя, как я мог бы исправить это, я нашел это фрагмент кода в Pscx.GetHelp.psm1:
#requires -version 2.0
param([string[]]$PreCacheList)
if ((!$SCRIPT:helpCache) -or $RefreshCache) {
$SCRIPT:helpCache = @{}
}
Это довольно простой код; если кеш не существует или нуждается в обновлении, создайте новый пустой кеш. Проблема в том, что вызов $SCRIPT:helpCache
в то время как Set-PSDebug -Strict
имеет силу, вызывает ошибку, поскольку переменная еще не определена.
В идеале мы могли бы использовать командлет Test-Variable
, но такой вещи не существует! Я подумал о том, чтобы найти поставщика variable:
, но я не знаю, как определить область действия переменной.
Так что мой вопрос: как я могу проверить наличие переменной, а Set-PSDebug -Strict
в силе, не вызывая ошибки?
Если вы используете PowerShell 2.0, я бы рекомендовал использовать 'Set-StrictMode -version 2.0', так как он уловит дополнительные потенциальные проблемы. –