web-dev-qa-db-ja.com

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)
        } 

私もチョコレートを使ってみましたが、同じ理由でうまくいきません。チョコレートをローカルで実行して動作します。

7
Richthofen

問題は、Powershellのデフォルトのリモートシェルメモリ制限が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

1
Richthofen

MSからの実行ファイルは、自己解凍アーカイブのようです(7-Zipで開くことができました)。 .exeをどこかに解凍してから/qSetup.exe含まれていますか?

2
Bert Lamb