2015-06-09 86 views
1

發現的解決方案:對於任何人碰巧遇到這個問題,必須在這看看,看到:http://www.harbar.net/archive/2010/10/30/avoiding-the-default-schema-issue-when-creating-the-user-profile.aspx配置SharePoint 2010 UPS使用PowerShell

TL; DR當您通過CA創建UPS,它會創建一個DBO用戶和架構在SQL服務器上使用服務器場帳戶,但是當通過powershell執行時,它會使用以服務器場帳戶命名的架構和用戶創建它,但仍嘗試使用dbo架構來管理SQL,這當然會導致嚴重失敗。

注:我只包括我認爲相關的腳本部分。我可以根據需要提供其他部分。

我在這個機智的結尾。似乎一切正常,除了UPS同步服務卡住「開始」,我已經超過了12個小時。

它通過GUI設置時正常工作,但我試圖自動執行每一步。雖然自動化我試圖包括從GUI可用的每個選項,以便它存在,如果它需要改變。

這是我到目前爲止有:

$domain = "DOMAIN" 
$fqdn = "fully.qualified.domain.name" 
$admin_pass = "password" 

New-SPManagedPath "personal" -WebApplication "http://portal.$($fqdn):9000/" 
$upsPool = New-SPServiceApplicationPool -Name "SharePoint - UPS" -Account "$domain\spsvc" 
$upsApp = New-SPProfileServiceApplication -Name "UPS" -ApplicationPool $upsPool -MySiteLocation "http://portal.$($fqdn):9000/" -MySiteManagedPath "personal" -ProfileDBName "UPS_ProfileDB" -ProfileSyncDBName "UPS_SyncDB" -SocialDBName "UPS_SocialDB" -SiteNamingConflictResolution "None" 
New-SPProfileServiceApplicationProxy -ServiceApplication $upsApp -Name "UPS Proxy" -DefaultProxyGroup 

$upsServ = Get-SPServiceInstance | Where-Object {$_.TypeName -eq "User Profile Service"} 
Start-SPServiceInstance $upsServ.Id 

$upsSync = Get-SPServiceInstance | Where-Object {$_.TypeName -eq "User Profile Synchronization Service"} 

$upsApp.SetSynchronizationMachine("Portal", $upsSync.Id, "$domain\spfarm", $admin_pass) 
$upsApp.Update() 

Start-SPServiceInstance $upsSync.Id 

我試着通過只複製它直接進入shell窗口定義變量之後的時間運行每行一個,和他們沒有給出一個錯誤,但必須有CA GUI所缺少的東西。

+0

檢查語法突出顯示,你需要平衡''''在'-ProfileDBName「UPS_ProfileDB' – JGreenwell

+0

哎呀,我的錯在我的錯誤。我不能直接複製代碼由於隔離,所以我不得不鍵入它結束了。 –

+0

查看[this sharepoint.SE question](http://sharepoint.stackexchange.com/questions/57656/user-profile-sync-status-stuck-at-synchronizing),因爲可能有多種原因爲了這 – JGreenwell

回答

1

對於其他人,恰好碰到過這樣的問題,必須在這看看,看到:http://www.harbar.net/archive/2010/10/30/avoiding-the-default-schema-issue-when-creating-the-user-profile.aspx

TL; DR當您通過CA創建UPS,它創建使用dbo用戶和架構的SQL服務器上服務器場帳戶,但是當通過PowerShell進行操作時,它使用以服務器場帳戶命名的模式和用戶創建它,但仍嘗試使用dbo模式管理SQL,這當然會導致嚴重失敗。

的解決方法是把我的代碼放入了自己的腳本文件,然後使用啓動進程來運行腳本場帳戶(它比鏈接的文章中所描述的工作方法清潔了很多):

$credential = Get-Credential ("$domain\spfarm", $SecureString) 

Start-Process -FilePath powershell.exe -ArgumentList "-File C:\upsSync.ps1" -Credential $credential 
相關問題