以管理员身份远程安装Net Framework 4

时间:2013-01-14 21:35:14

标签: .net powershell .net-4.0 puppet

我正在尝试使用以下命令远程安装.net framework 4.0

1

command => 'Powershell.exe -Verb RunAs -FilePath C:\Temp\dotNetFx40_Full_setup.exe -ArgumentList "/q /norestart /log C:\Temp\NetFx40.htm"'

2

command => 'C:\Windows\System32\cmd.exe /c C:\Temp\dotNetFx40_Full_setup.exe /q /norestart /log C:\Temp\NetFx40.htm',

两者都在日志中得到以下内容。顺便说一下,运行该命令的用户是本地管理员组的成员。

最终结果:安装失败,错误代码为:(0x00000005),“访问被拒绝。”(经过时间:0 00:00:55)。     操作系统版本= 6.1.7601,平台2,Service Pack 1     操作系统描述= Win2K8R2 - x64标准版Service Pack 1     CommandLine = D:\ ecfcf956d61e2bf89c1c75ce16 \ Setup.exe / q / norestart / log C:\ Temp \ NetFx40.htm / x86 / x64 / ia64 / web     TimeZone =东部标准时间     初始LCID = 1033     使用同步下载和安装机制     操作:安装     包名称= Microsoft .NET Framework 4安装程序     包版本= 4.0.30319     用户体验数据收集策略:已禁用     适用项目数:11     Exe(D:\ ecfcf956d61e2bf89c1c75ce16 \ SetupUtility.exe)成功。     Exe日志文件:dd_SetupUtility.txt     ServiceControl操作成功!     ServiceControl操作成功!     Exe(C:\ Users_BUILD~1 \ AppData \ Local \ Temp \ Microsoft .NET Framework 4 Setup_4.0.30319 \ Windows6.1-KB958488-v6001-x64.msu)因0x5失败 - 访问被拒绝。 。     最终结果:安装失败,错误代码为:(0x00000005),“访问被拒绝。”(经过时间:0 00:00:21)。

4 个答案:

答案 0 :(得分:1)

它不会工作,you're not the only one被这个咬了!

阅读此Microsoft支持文章以获取完整说明:

Windows Update Standalone Installer (WUSA) returns 0x5 ERROR_ACCESS_DENIED when deploying .msu files through WinRM and Windows Remote Shell

解决方法是从WinRM / WinRS会话中带外运行安装程序。

答案 1 :(得分:0)

安装.NET framework 4.0时,它会安装一些更新(.msu)文件。

但是当我们远程安装.NET 4.0时,由于这些更新而失败。这背后的原因是,不允许远程安装这些更新。请查找知识库文章enter link description here。本文还提到了解决方法。

我们可以跳过此更新&我们只能使用以下参数安装.NET framework 4.0:

dotnetfx40_Full_x86_x64.exe /norestart /SkipMSUInstall

答案 2 :(得分:0)

这可以通过使用SysInternals中的PSEXEC来实现。

psexec.exe \\SERVERNAME /s \\networkshare\setup\ndp48-x86-x64-allos-enu.exe /passive /norestart /SkipMSUInstall

答案 3 :(得分:-1)

我在尝试远程安装.Net 4.0时遇到了同样的错误。为解决这个问题,我使用了以下命令,How can I remotely, programmatically install .NET 4 client on an Azure VM?

Invoke-Command -session $CompSession -scriptBlock {
Start-Process -FilePath "C:\dotnetfx40_Full_x86_x64.exe" `
-ArgumentList " /passive /norestart /SkipMSUInstall /log "C:\results.log" -PassThru | Wait-Process}