2015-05-13 1 views
0

Можно ли запустить powershell, передав ему версию .NET CLR, которая нам нужна?Возможно указать версию PowerShell CLR в качестве аргумента

Systems с использованием Powershell V2 использование CLR версии 2 по умолчанию, и мы должны версии 4.

Мы могли бы реализовать конфигурационный файл:

  • C: \ Windows \ System32 \ WindowsPowerShell \ v1. 0 \ PowerShell.exe.config
  • C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ PowerShellISE.Exe.config
  • C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ PowerShell.exe.config
  • C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ PowerShellISE.exe.config

Как this:

<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0.30319"/> 
    <supportedRuntime version="v2.0.50727"/> 
</startup> 
</configuration> 

Но мы не хотим сделать изменения на серверах клиентов, которые могут потенциально излома другие программы, которые полагаются на PowerShell.

+0

[Этот вопрос] (http://stackoverflow.com/a/5403227/517852) имеет некоторые интересные ответы, в частности, [это один] (HTTP: // stackoverflow.com/a/5403227/517852) об использовании файлов конфигурации активации для одноразовых вызовы с использованием .NET 4. –

ответ

1

Вы можете проверить CLR версию в сценарии и выходе с ошибкой, если минимальные требования не выполняются:

if ($PSVersionTable.CLRVersion.Major -lt 4) { 
    Write-Error 'CLR Version 4.0 or newer required.' 
    exit 1 
} 

В качестве альтернативы, если проверка на минимальную версию PowerShell также будет работать, вы могли бы поставить #requires directive в качестве первой строки в вашем скрипте:

#requires -version 4.0 
Смежные вопросы