Подтвердить что ты не робот

Какая версия .NET является моей PowerShell script с помощью?

Я хотел бы использовать .NET в некоторых сценариях PowerShell, которые я собираюсь написать, - как я знаю/объявляю, какую версию .NET я имею в виду при запуске этих скриптов?

И можно ли выбрать, какая версия .NET my script будет запущена?

4b9b3361

Ответ 1

В PowerShell 2.0 просто загляните в переменную $PSVersionTable:

PS> $psversiontable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

В PowerShell 1.0 используйте [System.Environment]::Version:

PS> [Environment]::Version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      50727  4927

Ответ 2

Чтобы получить версию .NET:

[System.Reflection.Assembly]::GetExecutingAssembly().ImageRuntimeVersion

... который по умолчанию является версией CLR сборки (System.Management.Automation.dll), скомпилированной под.

И нет, вы не можете выбрать, какую версию .NET вы можете запустить под script.

Ответ 3

... нет, вы не можете выбрать, какую версию .NET вы можете запустить scriptпод - Джордж Ховарт

Воя, это неправда! Вы можете указать версию .NET, используемую PowerShell. Ключ - это стандартный файл конфигурации приложения .NET, который принимает форму [appname].exe.config. Вы можете отказаться от этого в том же каталоге, что и большинство приложений .NET, в том числе PowerShell и PowerShell ISE - и CLR автоматически загрузит любые распознаваемые параметры, указанные в файле конфигурации. Один из этих вариантов - версия CLR, которую вы хотите использовать.

Это подробно описано в вопросе: Как запустить PowerShell со средой .NET 4?. В частности, см. Сообщение Emperor XLII.

Ответ 4

Версия .NET может быть выведена из версии mscorlib. Итак, вы можете сделать следующее в PowerShell для вывода текущей версии .NET:

$a = [System.Reflection.Assembly]::Load("mscorlib")
$a.GetName().Version

Ответ 6

PS > [Runtime.InteropServices.RuntimeEnvironment]:: GetRuntimeDirectory()
C:\Windows\Microsoft.NET\Framework\v2.0.50727\

Ответ 7

Я выяснил, что вы можете искать эту информацию в каталоге C:\Windows\Microsoft.NET\Framework:

cd C:\Windows\Microsoft.NET\Framework
dir

Внутри каталогов будут указаны версии установленных фреймов.

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        14/07/2009     10:48            3082
d----        14/07/2009      4:37            v1.0.3705
d----        14/07/2009      4:37            v1.1.4322
d----        25/06/2010     17:26            v2.0.50727
d----        14/07/2009     10:48            v3.0
d----        14/07/2009     10:48            v3.5