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