改名された組織名を 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&#45;Object Microsoft.SharePoint.SPSite("http://server")
$OpenWeb = $SPSite.OpenWeb("/")
$spUser = $OpenWeb.SiteUsers["domein&yen;組織"]
$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に反映されない


これまでのコメント

  1. ono より:

    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

  2. saruhiko より:

    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)
    スクリプトの実行ができなくて、今日は半日これと格闘でした(笑)
    ./ で起動できてしまった時には自分の半日はなんだったのかと唖然…。

    本当にありがとうございました!

login

Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9