web-dev-qa-db-ja.com

昇格された特権を持つクラスターに対してPowershell SMOを実行してサービスアカウントを更新する

フェールオーバークラスター内の名前付きSQLインスタンスのサービスアカウントを更新するPowershellスクリプトに取り組んでいます。これを更新するために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(リモート)Windows 7 with SQL 2012 sqlpsモジュール(ローカル)

更新:スクリプトを実行しているアカウントには、リモートマシンに対する管理者権限があります。

ここでの主な質問は、クライアントマシンからの呼び出しを、リモートマシンの昇格された権限で実行されているかのように動作させるにはどうすればよいですか?

6
Mike Fal

私は同じ問題に遭遇し、SMOバグ(1番目のリンク)のように見えます(ただし、下の2番目のリンクからCredSSPのものを試していません)

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

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

うまくいくかどうか教えてください。

1
WrinkleFree

Powershellスクリプトで単一引用符を試してください。私はそれを切り替える前に1時間これに頭をぶつけました、そしてそれは魅力のように働きました。

0
jmacnett