改名された組織名を PowerShell で強制変更する
SharePoint のプロファイル同期機能は、AD グループの変更までは同期しません。厳密に言うと、OU の変更はインポートされますが、表示名の変更がSharePointに渡りません(参考:ActiveDirectory で変更した組織名が正しく SahrePoint に反映されない)。このため、「ユーザとグループの選択」ダイアログには、いつまでも古い組織名が表示されてしまいます。これはあまり望ましい状態ではありません。
この問題を解決するために、2009年9月のCU を適用すると Stsadm.exe -o migrategroup が利用できるようになります。しかし、CUを適用できない環境でも、PowerShell を利用して強制的に組織の表示名を「書き換え」ることが可能です。MOSSの標準APIによる操作のため、Microsoftの保証の範疇です。
まず、サーバに PowerShell をインストールする必要があります。
Windows PowerShell でのスクリプティング
インストールが完了したら、プロンプトを起動してください。既定では、スクリプトの動作が無効になっているので、有効にする必要がありますので、Set-ExecutionPolicy コマンドレットを実行します。
詳細はこちら Windows PowerShell スクリプトを作成して実行する方法を教えてください
次に、スクリプトを記述したファイルを用意します。
以下がサンプルです。テキストファイルで作成し、拡張子を .ps1 に変更して下さい。
[code][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint, Version=<font color="red">12.0.0.0</font>, Culture=Neutral, PublicKeyToken=999999999999999")
$SPSite = New-Object Microsoft.SharePoint.SPSite("http://server")
$OpenWeb = $SPSite.OpenWeb("/")
$spUser = $OpenWeb.SiteUsers["domein¥組織"]
$spUser.Name = "新組織名>"
$spUser.Update() [/code]
もちろん、お使いの環境に合わせて変更が必要です。Version 値と PublicKeyToken は、C:¥WINDOWS¥assembly 配下 Microsoft.SharePoint のプロパティで確認できます。
http://server はサイトコレクションのルート URL を指定します。
domein¥組織 は変更したいグループの OU を指定します。
新組織名は、文字通り、変更後の名前です。
どんな文字でも指定できますが、通常はこちらも domein¥組織 でしょう。
ファイルが完成したらこのスクリプトファイルを PowerShell で実行します。なお、前述のサイトでは「プロンプトにドラッグ&ドロップで実行」と書かれているのですが、私の環境ではこの方法ではスクリプトが実行されず、./hogehoge.ps1 形式で、直接ファイルを叩く必要がありました。
このノウハウを教えてくださった ono 様、ありがとうございました。
ActiveDirectoryで変更した組織名が正しくSahrePointに反映されない2
ActiveDirectoryで変更した組織名が正しくSahrePointに反映されない
AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
いつもROMってばかりでしたので、お役に立ち光栄です。
山崎さんとやり取りした中では、SharePointのオブジェクトを利用するので、サポート対象になるという話を頂きました。
動作に関しても、\’dbo.UserInfo\’のテーブルの一部を書き換えるだけですので、特に問題はないと考えられます。
下記に山崎さんの詳しい情報が記載されておりますので
ご参考までに、記載させて頂きます。
http://shanqiai.weblogs.jp/sharepoint_technical_note/2008/01/moss-0d54.html
AGENT: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
スクリプトの実行ができなくて、今日は半日これと格闘でした(笑)
./ で起動できてしまった時には自分の半日はなんだったのかと唖然…。
本当にありがとうございました!