マシンの大規模なグループに.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)
}
私もチョコレートを使ってみましたが、同じ理由でうまくいきません。チョコレートをローカルで実行して動作します。
問題は、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
MSからの実行ファイルは、自己解凍アーカイブのようです(7-Zipで開くことができました)。 .exeをどこかに解凍してから/q
Setup.exe
含まれていますか?