3

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
Action: Downloading http://go.microsoft.com/fwlink/?LinkId=164184&clcid=0x409 using WinHttp 
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?

Jake
  • 31

2 Answers2

0

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.

0

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

schtasks /run /tn net4install /i

schtasks /delete /tn installdotnet4 /f

Ugly, but it works. If anyone finds a more elegant way to solve this, I'm all ears =)

Jake
  • 31