通过 powershell 远程安装 .NET 4.6.1

通过 powershell 远程安装 .NET 4.6.1

我正在尝试在一大组机器上远程安装 .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)
        } 

我也尝试过使用 chocolatey,但它也不起作用,我认为原因是一样的。在本地运行 chocolatey 是可行的。

答案1

MS 的可执行文件似乎只是一个自解压档案(我能够使用 7-Zip 打开它)。您是否尝试过将 .exe 解压到某个位置,然后尝试打开其中包含的/q开关Setup.exe

答案2

问题是 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

相关内容