4

I have a server which we are using for Batch processing.

I can login to the server with svc_account and run powershell -f file.ps1 and it runs fine in either version 2 or 3 by the following -

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

If I attempt to run it through our batch processor I get the following message

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

This error occurs regardless of if I get my batch processor to run as v3 or v2 of powershell.

Thing is, .NET is installed. 3.5, 4.0 and 4.5 all exist on this server so it's something with the account login that it's for some reason not recognizing that .NET is installed.

whoisearth
  • 151
  • 1
  • 7
  • Check for the registry key `[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "InstallRoot"="C:\Windows\\Microsoft.NET\Framework64\"` – krisFR May 29 '15 at 23:03
  • 1
    does it run fine if the pull path to powershell.exe is specified? – user2320464 May 29 '15 at 23:20
  • @krisFR that key is missing/not there but the InstallRoot Key can be found under v4\Client, v4\Full, etc. I checked a working server and the registry under `[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]` is the same in both servers – whoisearth May 30 '15 at 15:16
  • @user2320464 full path for powershell gives the same error. Doesn't matter if I use 32 bit or 64 bit, but for example calling `%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe Write-Host "Hello!"` still generates the error message. – whoisearth May 30 '15 at 15:18
  • Are you using PS remoting? – Bernie White Jun 02 '15 at 20:17
  • no this is local to the server. the application runs the command locally as the account. – whoisearth Oct 22 '15 at 00:20

2 Answers2

1

Add this key and try running it again:

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

bentek
  • 2,205
  • 1
  • 14
  • 23
  • 2
    I have the same error except it's complaining about .NET Frameworks 4.6.00081. Unfortunately, this registry setting is already set to this value. – Jonathan Wood Oct 19 '15 at 20:40
  • 1
    This doesn't do it. the registry is correct and nothing seems to be wrong with the install. issue seems to be with the user profiles specifically when being called as remote logins. – whoisearth Oct 22 '15 at 00:21
  • 1
    @whoisearth I ran into this issue when running PowerShell in Windows Sandbox, the new Windows feature which runs a clean install of Windows and then logs to it remotely, so I think what you allude it is the issue here as well. Can you elaborate on what it was that you meant with user profiles and remote logins? Did you find a solution? – Tomáš Hübelbauer Jun 21 '19 at 07:08
0

We were running powershell on the .NET framework version 4 (ala:

https://stackoverflow.com/q/2094694

) this involved using an activation configuration file

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

and

set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath = %~dp0

The important part in our case was that we were requesting framework version 4.6.1 and we only had 4.5 installed.

The error message is clearly inadequate because the framework version was not the issue. But because this question is the first hit you get when you search that error message this answer will hopefully prove useful to someone else.

hannasm
  • 151
  • 1
  • 4