web-dev-qa-db-ja.com

スクリプトを介してMySiteユーザーサイトを事前プロビジョニングしますか?

SP 2010-MSが推奨していないことはわかっていますが、Uniインストールであり、事前に学生アカウントを設定しておく必要があります。数千人の人々がすべて同じ日に現れて、私たちの利用可能なサービスを見回し始めたときに、すべてがバナナになるのではなく。

これは、ある種のスクリプトを介して実行できますか? Powershellには、ユーザーが自分のサイトに物理的にアクセスしなくても作成をトリガーするメカニズムがあると思いますか?

2
Chris W

これで開始できます。サイト作成部分をユーザーリストのループにラップし、エラーチェックを追加する必要があります。

私はこれが2007年に機能することを確かに知っていますが、2010年にはテストしていません。すべて同じものが存在するので、そうする必要があります。最後に、これはSLOWです。SP2007サーバーで1人のユーザーを作成するには、5〜10秒かかります。 mysitesファームが十分に強力な場合は、実際には、ユーザーに個人用サイトをアドホックに作成させる方がよい場合があります。

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")

$siteurl = "http://your.mysitesurl.com"    

$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
$context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)

# start loop here
$user = "domain\username"
if ($upm.UserExists($user)) {
    $profile = $upm.GetUserProfile($user)

    # there are other exceptions you can catch, check out the UserProfiles class
    trap [Microsoft.Office.Server.UserProfiles.PersonalSiteExistsException] {
            Write-Host "personal site already exists for $user"
            continue
    }
    $profile.CreatePersonalSite();
}  else {
  Write-Host: "user $user did not exist"
}
# end loop here

$site.Dispose()
4
MattB