# How do you install .net4 on a Server 2008 r2 machine through psremoting in powershell?

I need to write a script that installs .net 4 remotely using powershell to a group of Server 2008 R2 machines. I based my script off of http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/3045eb24-7739-4695-ae94-5aa7052119fd/.

enter-pssession -computername localhost
$arglist = "/q /norestart /log C:\Users\tempuser\Desktop\dotnetfx4"$filepath = "C:\Users\tempuser\Desktop\dotNetFx40_Full_setup.exe"
Start-Process -FilePath $filepath -ArgumentList$arglist -Wait -PassThru


After running the command I would get the following log errors (running the same lines locally would install .net without error):

Action: Downloading Item
Failed to CreateJob : hr= 0x80200014
Action: Performing actions on all Items
Action: Performing Action on Exe at C:\Users\tempuser\Desktop\dotnetfx4\SetupUtility.exe
Exe (C:\Users\tempuser\Desktop\dotnetfx4\SetupUtility.exe) succeeded.
Exe Log File: dd_SetupUtility.txt
Action complete
Action: ServiceControl - Stop clr_optimization_v2.0.50727_32
ServiceControl operation succeeded!
Action complete
Action: ServiceControl - Stop clr_optimization_v2.0.50727_64
ServiceControl operation succeeded!
Action complete
Action: Performing Action on Exe at C:\Users\tempuser\AppData\Local\Temp\Microsoft .NET Framework 4 Setup_4.0.30319\Windows6.1-KB958488-v6001-x64.msu
Exe (C:\Users\tempuser\AppData\Local\Temp\Microsoft .NET Framework 4 Setup_4.0.30319\Windows6.1-KB958488-v6001-x64.msu) failed with 0x5 - Access is denied. .
PerformOperation on exe returned exit code 5 (translates to HRESULT = 0x5)
Action complete
OnFailureBehavior for this item is to Rollback.
Action: Performing actions on all Items
Action complete
Action complete
WinHttpDetectAutoProxyConfigUrl failed with error: 12180
Unable to retrieve Proxy information although WinHttpGetIEProxyConfigForCurrentUser called succeeded
Action complete
C:\Users\tempuser\AppData\Local\Temp\Microsoft .NET Framework 4 Setup_4.0.30319\TMPF279.tmp.exe: Verifying signature for netfx_Core.mzz
C:\Users\tempuser\AppData\Local\Temp\Microsoft .NET Framework 4 Setup_4.0.30319\TMPF279.tmp.exe Signature verified successfully for netfx_Core.mzz
Action complete
Decompression completed with code: 16389
Decompression of payload failed: C:\Users\tempuser\AppData\Local\Temp\Microsoft .NET Framework 4 Setup_4.0.30319\netfx_Core.mzz
Action complete
Final Result: Installation failed with error code: (0x80074005) (Elapsed time: 0 00:00:28).


Is there some security setting or perhaps something else I've missed?

-
Seems like a permission issue, How are you running the script? – Ƭᴇcʜιᴇ007 Nov 18 '11 at 20:59
I've been running this as admin with a user that's part of the administrator group. Running the script without the "enter-pssession" line seems to work no problem. – Jake Nov 21 '11 at 16:19
Like right-click->Run As Administrator on the .PS1? – Ƭᴇcʜιᴇ007 Nov 21 '11 at 16:25
I'm actually doing that on powershell.exe and running this through a console. – Jake Nov 21 '11 at 22:03
Hope you are using ps 3.0 and server 2008 r2 systems are up to date with sp1. By the way, you can have a look at calegp.com/?p=247&cpage=1#comment-177. – Lasith Jan 30 '13 at 13:15

I figured out how to make it work using Opalis. There is an option for running the process "Interactively" instead of in the background. It still runs remotely, so I can run it against multiple machines. This is what did the trick for me. Here is how Opalis defines the different modes of execution:

Interactive - Select this option to display a user interface on the computer where the command or program is run. A user interface, if available, appears in a user session that is defined by the user credentials specified in the Run as boxs (User name, Password) on the Advanced tab.

Background, normal priority - Select this option to run the command or program in the background with the process priority set to normal. In this mode no user interface will be displayed.

Background, low priority - Select this option to run the command or program in the background with the process priority set to low. In this mode no user interface will be displayed. Some programs may not function correctly when set to low priority. If this is the case, use the Interactive or Backgroud, normal priority settings instead.

-
I won't be able to use Opalis due to legal issues, cost, and setup. Powershell was picked because of it's remoting capabilities, minimal setup, and it already being installed in Server 2008 R2 machines. Hopefully this solution helps someone else! – Jake Nov 30 '11 at 0:07

I've found a workaround for this issue using scheduled tasks. The .net 4 installer has no problem with running through a scheduled task as the current admin user that it fails to run under directly through powershell.

Creating, running, and deleting said task through a psremoting session works fine.

schtasks /create /tn net4install /sc once /st 12:34 /sd 01/02/2003 /f /np /RL highest /tr M:\SharedDriveLocation\dotNetFx40_Full_setup.exe /q /norestart