繁体   English   中英

通过powershell远程安装.net

[英]Install .net remotely via powershell

我正在尝试通过 PowerShell 在 Windows Server 2008 r2 机器上远程安装 .net 框架。 读到这似乎无法通过现有的 PowerShell 会话来实现,但需要显式传入凭据(知道这是为什么吗?)。 但是,我仍然收到权限错误。

例如,如果我运行:

$cred = Get-Credential -Credential 10.20.0.13\administrator
$Session=New-PsSession -ComputerName 10.20.0.13 -Credential $cred
Invoke-command -ScriptBlock {Start-Process -FilePath c:\installers\dotNetFx40_Full_x86_x64.exe  -ArgumentList "/q /norestart /log c:\" -Wait} -Credential $cred -ComputerName 10.20.0.13

我可以在安装程序运行的远程机器上看到(在任务管理器中),在 c:\\ 的根目录上创建了临时文件夹,提取了文件,然后我得到了一个 700kb 的日志文件。 在该日志文件的底部,我得到:

操作系统版本 = 6.1.7601,平台 2,服务包 1 操作系统描述 = Win2K8R2 - x64 标准版服务包 1 命令行 = C:\\b65da67b927bfb71c84adcefc019\\Setup.exe /q /norestart /log c:\\ /x86 /x64 TimeMT标准时间初始 LCID = 2057 使用同步下载和安装机制 操作:安装包名称 = Microsoft .NET Framework 4 安装包版本 = 4.0.30319 用户体验数据收集策略:禁用 适用项目数:11 Exe (C:\\b65da67b927bfb71c84adcefc019 SetupUtility.exe) 成功。 exe 日志文件:dd_SetupUtility.txt ServiceControl 操作成功! ServiceControl 操作成功! Exe (C:\\b65da67b927bfb71c84adcefc019\\Windows6.1-KB958488-v6001-x64.msu) 失败,0x5 - 访问被拒绝。 . 最终结果:安装失败,错误代码:(0x00000005),“访问被拒绝。”(经过时间:0 00:01:12)。

所以访问被拒绝。 但是,使用完全相同的凭据,我可以执行其他任务(在 Powershell 中添加服务器角色,通过 powershell 添加 Windows 功能等),并且我可以使用相同的用户名/密码 RDP 到盒子上并在那里运行安装程序(完成良好)。

我在某处遗漏了一些东西,但似乎无法找出它是什么。 我可以看到它对其他人有用( http://social.technet.microsoft.com/Forums/windowsserver/ar-SA/3045eb24-7739-4695-ae94-5aa7052119fd/install-dotnet-framework-4-using-powershell ?forum=winserverpowershell ) 所以不知道为什么我会得到这个。

非常感谢任何帮助。

谢谢

您正在创建会话但从未使用过吗?

我没有在远程计算机上尝试过,但是尝试通过使用-Verb RunAs以“ admin”身份运行进程,如下所示:

$cred = Get-Credential -Credential 10.20.0.13\administrator
$Session=New-PsSession -ComputerName 10.20.0.13 -Credential $cred
Invoke-command -ScriptBlock {Start-Process -FilePath c:\installers\dotNetFx40_Full_x86_x64.exe  -ArgumentList "/q /norestart /log c:\" -Wait -Verb RunAs } -Session $Session

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

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

您在文本文件中有 servername 或基于 OU 的机器名称。 创建具有 .exe 的 .bat 来运行 C:\\temp\\xxx.exe /S /qn

$ou='OU=subou3,OU=subou2,OU=subou1,DC=domain,DC=com' $filter = @("machinename1", "machinename2") $compute= Get-ADComputer -Filter * -SearchBase $ou | where-object{$filter -contains $_.name} $comp=$compute.name

foreach($Comp 中的 $Computer){

写主机“处理 $Computer”

{ Write-Host “在 $Comp 上安装应用程序”

    psexec $Compter path\XXX.bat /S /qn}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM