Я пытаюсь удаленно установить .NET framework4.6.1 на большой группе машин. Я использую PowerShell для удаленного написания сценария. Проблема в том, что по какой-либо причине .exe, похоже, не хочет запускаться удаленно. Я предполагаю, что это связано с тем, что .exe для обновления запускает сеанс пользовательского интерфейса. Однако даже передача параметра «/ q», который должен разрешить удаленную установку, по-прежнему не работает. Я не получаю никаких ошибок, и когда RDP подключен к рассматриваемому компьютеру, похоже, что он не обновляется или не использует какой-либо процессор для обновления.
Мой сценарий:
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 где-нибудь, а затем попробовать /q
включить Setup.exe
содержащаяся в?
Проблема заключалась в том, что в PowerShell по умолчанию установлен лимит памяти удаленной оболочки в 150 МБ. При установке .NET 4.6.1 в память загружается самораспаковывающееся содержимое exe, некоторые элементы которого превышают 150 МБ. Эта ссылка предоставила правильный метод увеличения предела памяти. http://blogs.technet.com/b/heyscriptingguy/archive/2013/07/30/learn-how-to-configure-powershell-memory.aspx