Powershell

Powershell - 呼叫命令不執行 msiexec.exe

  • June 24, 2020

我想在一堆伺服器上安裝 TortoiseSVN 客戶端,使用 Powershell 遠端處理。基本操作有效,但以下命令無法遠端處理

Invoke-Command -ComputerName myserver -ScriptBlock {Start-Process "msiexec.exe" -ArgumentList "/i \\fileserver\install\subversionclients\TortoiseSVN-1.14.0.28885-x64-svn-1.14.0.msi  /passive /norestart /qn ADDLOCAL=ALL" -Wait}

另一方面,登錄到伺服器並發出以下命令

Start-Process "msiexec.exe" -ArgumentList "/i \\fileserver\install\subversionclients\TortoiseSVN-1.14.0.28885-x64-svn-1.14.0.msi  /passive /norestart /qn ADDLOCAL=ALL" -Wait`

…這樣可行。我無法弄清楚原因 - 沒有顯示錯誤,也沒有返回值。據我了解 Invoke-command 預設情況下它是提升的。嘗試添加-Verb RunAs也無濟於事。我也有-wait-argument (參考https://serverfault.com/a/550169/180067),但這對我來說也沒有幫助。

這是因為您正在使用 Kerberos 身份驗證,並且您嘗試執行“雙跳”,而這在預設情況下使用 Kerberos 是不可能的(基本上,您可以向“myserver”進行身份驗證,但您不能再次“跳”到“文件伺服器”)。

你可以做什麼:

  • 將文件複製到伺服器本地,然後從本地目錄遠端安裝 MSI。
  • 或者,如果您不想在本地複制它,您可以使用 CredSSP 而不是 Kerberos 對“myserver”進行身份驗證,但這需要配置。在命令中添加-Authentication CredSSP-Credential "yourUserName",然後按照錯誤消息中顯示的說明進行操作。

此處提供了其他詳細資訊、注意事項和不同的解決方案: 在 PowerShell Remoting 中進行第二個躍點

$$ … $$您可以使用憑據安全支持提供程序 (CredSSP) 進行身份驗證。CredSSP 在遠端伺服器 (ServerB) 上記憶體憑據,因此使用它會使您面臨憑據盜竊攻擊。如果遠端電腦受到威脅,攻擊者就可以訪問使用者的憑據。預設情況下,客戶端和伺服器電腦都禁用 CredSSP。您應該僅在最受信任的環境中啟用 CredSSP。例如,域管理員連接到域控制器,因為該域控制器是高度信任的$$ … $$

在這裡配置 CredSSP: Enable PowerShell “Second-Hop” Functionality with CredSSP

在我的客戶端工作站上,我需要使用 Enable-WSManCredSSP cmdlet 來啟用客戶端角色,然後指定要將我的憑據委託給的電腦。此處顯示此命令。

Enable-WSManCredSSP -Role Client -DelegateComputer *.iammred.net -Force

現在,我還需要在遠端伺服器上進行更改以允許它使用委託 > 憑據。此處顯示此命令。

Enable-WSMaCredSSP -Role Server –Force

引用自:https://serverfault.com/questions/1022777