Adicione esta chave e tente executá-la novamente:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"InstallRoot"="C:\Windows\Microsoft.NET\Framework64\"
Eu tenho um servidor que estamos usando para processamento em lotes.
Eu posso fazer o login no servidor com svc_account e executar powershell -f file.ps1
e ele é executado na versão 2 ou 3 pela seguinte -
powershell -Version 2 -f file.ps1
powershell -f file.ps1
Se eu tentar executá-lo em nosso processador de lote, recebo a seguinte mensagem
Version v4.0.30319 of the .NET Framework is not installed and it is required to run version 3 of Windows PowerShell.
Esse erro ocorre independentemente de eu obter meu processador em lote para executar como v3 ou v2 de powershell.
A coisa é, o .NET está instalado. 3.5, 4.0 e 4.5 todos existem neste servidor, então é algo com o login da conta que, por algum motivo, não reconhece que o .NET está instalado.
Adicione esta chave e tente executá-la novamente:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"InstallRoot"="C:\Windows\Microsoft.NET\Framework64\"
Estávamos executando o powershell no .NET Framework versão 4 (ala:
) envolveu o uso de um arquivo de configuração de ativação
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
e
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath = %~dp0
A parte importante no nosso caso foi que estávamos solicitando a versão 4.6.1 do framework e tínhamos apenas 4.5 instalados.
A mensagem de erro é claramente inadequada porque a versão do framework não era o problema. Mas como essa pergunta é o primeiro a ser atingido quando você pesquisa essa mensagem de erro, essa resposta provavelmente será útil para outra pessoa.