Sql-Server

對具有提升權限的集群執行 Powershell SMO 以更新服務帳戶

  • February 5, 2016

我正在編寫一個 Powershell 腳本來更新故障轉移集群中命名 SQL 實例上的服務帳戶。我正在嘗試使用 SMO 和 WMI 來更新它,以便我可以更新主動節點上的服務帳戶並將其填充到其他被動節點(如果我在配置工具中手動更新就會發生這種情況)。我正在嘗試在本地機器上執行腳本但更新遠端伺服器。根據我的 Google 搜尋,我看到的錯誤似乎與安全相關,如果我在具有提升權限的遠端電腦上本地執行腳本(以管理員身份),則該錯誤是成功的。

程式碼:

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null
$mc=New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer "SQLHOST01"

$srvcs= $mc.Services | Where {$_.name -like "*INSTANCE01*"} | Where {$_.Type -like "Sql*"}

$srvcs | ft name,servicestate,serviceaccount

foreach ($s in $srvcs){
   $s.SetServiceAccount("FOO\Bar","strongpass")
}

錯誤:

Exception calling "SetServiceAccount" with "2" argument(s): "Set service account failed. "
At line:11 char:5
+     $s.SetServiceAccount("FOO\Bar","strongpass")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
   + FullyQualifiedErrorId : FailedOperationException

使用: Windows 2008 R2(遠端) SQL 2008 R2(遠端) 帶有 SQL 2012 sqlps 模組(本地)的 Windows 7

更新:我正在執行腳本的帳戶在遠端電腦上具有管理員權限。

這裡的主要問題是如何使來自客戶端電腦的呼叫像在遠端電腦上的提升權限下執行一樣?

我遇到了同樣的問題,看起來像是一個 SMO 錯誤(第一個連結)(但是我沒有嘗試過下面第二個連結中的 CredSSP 東西)

http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/265ee700-182d-4a99-96f8-cada117fd3d3

http://www.ravichaganti.com/blog/?p=1230

請讓我知道這是否有效..

在你的 powershell 腳本中嘗試單引號。在我把它關掉之前,我用頭撞了一個小時,它就像一個魅力。

引用自:https://dba.stackexchange.com/questions/29448