Назад | Перейти на главную страницу

Версия v4.0.30319 .NET Framework не установлена, и она требуется для запуска версии 3 Windows PowerShell.

У меня есть сервер, который мы используем для пакетной обработки.

Я могу войти на сервер с помощью svc_account и запустить powershell -f file.ps1 и он отлично работает в версии 2 или 3 следующим образом:

powershell -Version 2 -f file.ps1
powershell -f file.ps1

Если я попытаюсь запустить его через наш пакетный процессор, я получаю следующее сообщение

Version v4.0.30319 of the .NET Framework is not installed and it is required to run version 3 of Windows PowerShell.

Эта ошибка возникает независимо от того, запускал ли я свой пакетный процессор как v3 или v2 PowerShell.

Дело в том, что .NET установлен. 3.5, 4.0 и 4.5 все существуют на этом сервере, так что это что-то с логином учетной записи, которое по какой-то причине не распознает, что .NET установлен.

Добавьте этот ключ и попробуйте запустить его снова:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "InstallRoot"="C:\\Windows\\Microsoft.NET\\Framework64\\"

Мы запускали powershell на платформе .NET версии 4 (ala:

https://stackoverflow.com/q/2094694

) для этого использовался файл конфигурации активации

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup> 

и

set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath = %~dp0

Важным моментом в нашем случае было то, что мы запрашивали версию 4.6.1 фреймворка, а у нас была установлена ​​только 4.5.

Сообщение об ошибке явно неадекватно, потому что проблема не в версии платформы. Но поскольку этот вопрос - первое, что вы получаете при поиске этого сообщения об ошибке, мы надеемся, что этот ответ окажется полезным для кого-то еще.