使用PowerShell配置SharePoint 2010 UPS

使用PowerShell配置SharePoint 2010 UPS,powershell,sharepoint,sharepoint-2010,ups,Powershell,Sharepoint,Sharepoint 2010,Ups,找到的解决方案:对于碰巧遇到此问题的任何其他人,请查看以下内容: TL;DR当您通过CA创建UPS时,它会使用服务器场帐户在SQL server上创建dbo用户和架构,但是当通过powershell执行此操作时,它会使用以服务器场帐户命名的架构和用户创建它,但仍然尝试使用dbo架构管理SQL,这当然会失败 注意:我只包含了我认为相关的脚本部分。我可以根据需要提供其他部件 在这件事上我束手无策。一切似乎都很好,除了UPS同步服务卡在“启动”上,我已经离开了12个多小时 当通过GUI进行设置时,它工

找到的解决方案:对于碰巧遇到此问题的任何其他人,请查看以下内容:

TL;DR当您通过CA创建UPS时,它会使用服务器场帐户在SQL server上创建dbo用户和架构,但是当通过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一定有我遗漏的地方。

对于碰巧遇到此问题的任何其他人,请查看以下内容:

TL;DR当您通过CA创建UPS时,它会使用服务器场帐户在SQL server上创建dbo用户和架构,但是当通过powershell执行此操作时,它会使用以服务器场帐户命名的架构和用户创建它,但仍然尝试使用dbo架构管理SQL,这当然会失败

解决方法是将我的代码放入自己的脚本文件中,然后使用Start Process将脚本作为服务器场帐户运行(它比链接文章中描述的作业方法干净得多):


检查语法突出显示,你需要在
-ProfileDBName“UPS\u ProfileDB
上平衡你的
,哎呀,我的打字错误。由于隔离,我无法直接复制代码,所以我不得不重新键入。检查一下,因为可能有很多原因
$credential = Get-Credential ("$domain\spfarm", $SecureString)

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