簡體   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