2013-02-26 3 views
2

В моем профиле PowerShell у меня есть Set-StrictMode -Version 2.0. К сожалению, у меня есть несколько сценариев (и модулей), которые работают неправильно, когда включен строгий режим.Отключить строгий режим в сценарии PowerShell

Я попытался исправить это, поставив Set-StrictMode -Off в верхней части скриптов или в верхней части скриптов, использующих модули с неправильным функционированием. К сожалению, это не имеет никакого эффекта.

Как временно отключить строгий режим в PowerShell?

Подробнее: Это особенно происходит с PsGet. См. issue 57. У меня есть Set-StrictMode -Version 2.0 в моем профиле. Если я попытаюсь использовать Psget's Install-Module из сценария, я получаю ошибки, говорящие, что «Свойство« Верб »не может быть найдено на этом объекте».

Это происходит, даже если я положил Set-StrictMode -Off в начало сценария. Если я запускаю Set-StrictMode -Off в командной строке перед запуском скрипта, я не получаю ошибок и скрипт работает нормально.

PsGet импортируется в мой профиль, прежде чем включать строгий режим.

+0

Вы уверены, что что это Set-StrictMode вызывает ошибки? Я предполагаю, что вы протестировали одни и те же скрипты после того, как удалили его из своего профиля $? Я пытался реплицировать проблему, но я всегда могу переопределить свой $ profile, явно вызвав ее в скрипте или консоли. – Matt

+0

Я добавил более подробно в вопрос. –

ответ

1

Как говорит Мэтт в комментариях, я не вижу, чтобы эта проблема воспроизводилась. Можете ли вы предоставить более подробную информацию?

Содержание StrictModeTest.ps1:

Set-StrictMode -Off 

# variable $x doesn't exist, should trigger strictmode error 
"Value is [$($x.Path)]" 

Testing (PSv3):

PS C:\> Set-StrictMode -Version 2.0 
PS C:\> .\StrictModeTest.ps1 
Value is [] 

Если я закомментируйте Set-StrictMode -Off линию, я получаю ожидаемую ошибку:

PS C:\> .\StrictModeTest.ps1 
The variable '$x' cannot be retrieved because it has not been set. 
At C:\StrictModeTest.ps1:4 char:14 
+ "Value is [$($x.Path)]" 
+    ~~ 
    + CategoryInfo   : InvalidOperation: (x:String) [], RuntimeException 
    + FullyQualifiedErrorId : VariableIsUndefined 

Value is []