我正在试图在一大群机器上远程安装.NET Framework4.6.1。 我正在使用powershell来远程编写脚本。 问题是,无论出于何种原因,.exe似乎不希望被远程调用。 我假设这是由于升级的.exe启动UI会话的事实。 但是,即使通过应允许远程安装的“/ q”参数,它仍然不起作用。 我没有得到任何错误,当RDP进入有问题的机器时,似乎没有升级或使用任何CPU进行升级。
我的脚本:
Write-Host "Executing 'Upgrade dotnet 4.6' for $server" Invoke-Command -ComputerName $servers -Credential $credentials -ScriptBlock { $Url = 'https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe' $Exe = "net461.exe" $Dest = "C:\\" + $Exe $Params = " /q" $client = new-object System.Net.WebClient $client.DownloadFile($Url,$Dest) Invoke-Expression ("cmd.exe /C " + $Dest + $Params) }
我也尝试使用巧克力,它也不起作用,因为我想同样的原因。 在本地运行巧克力。
从MS的可执行文件似乎只是一个自解压存档(我可以用7-Zip打开它)。 你有没有试过在某个地方解压缩.exe,然后尝试在Setup.exe包含的/q开关?
问题是,PowerShell的默认远程shell内存限制为150MB。 .NET 4.6.1的安装会将自解压的exe的内容加载到内存中,有些项目大于150 MB。 此链接提供了增加内存限制的正确方法。 http://blogs.technet.com/b/heyscriptingguy/archive/2013/07/30/learn-how-to-configure-powershell-memory.aspx