【问题标题】:Configure SharePoint 2010 UPS with PowerShell使用 PowerShell 配置 SharePoint 2010 UPS
【发布时间】:2015-06-09 20:02:07
【问题描述】:

解决方案:对于碰巧遇到此问题的任何其他人,请查看:http://www.harbar.net/archive/2010/10/30/avoiding-the-default-schema-issue-when-creating-the-user-profile.aspx

TL;DR 当您通过 CA 创建 UPS 时,它会使用农场帐户在 SQL 服务器上创建一个 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 必须做一些我正在做的事情不见了。

【问题讨论】:

  • 查看语法高亮,你需要在-ProfileDBName "UPS_ProfileDB平衡你的""
  • 哎呀,我错了。由于隔离,我无法直接复制代码,所以我不得不将其键入。
  • 查看this sharepoint.SE question,原因可能有很多

标签: powershell sharepoint sharepoint-2010 ups


【解决方案1】:

对于碰巧遇到此问题的其他人,请查看:http://www.harbar.net/archive/2010/10/30/avoiding-the-default-schema-issue-when-creating-the-user-profile.aspx

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

解决方法是将我的代码放到自己的脚本文件中,然后使用 Start-Process 以农场帐户运行脚本(比链接文章中描述的 Job 方法干净得多):

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2012-08-06
    • 2011-03-28
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多