我们正在为一些合作伙伴推出使用 WSS 3.0 作为平台的外联网。我们已经在内部将其用于各种用途,并且我们正在使用以下 powershell 脚本来备份服务器:
param(
$url="http://localhost",
$backupFolder="c:\"
)
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site= new-Object Microsoft.SharePoint.SPSite($url)
$names=$site.WebApplication.Sites.Names
foreach ($name in $names)
{
$n2 = ""
if ($name.Length -eq 0)
{ $n2="ROOT" }
else
{ $n2 = $name }
$tmp=$n2.Replace("/", "_") + ".sbk"
$saveas = ""
if ($backupFolder.Length -eq 0)
{ $saveas = $tmp }
else
{ $saveas = join-path -path $backupFolder -childPath $tmp }
$site.WebApplication.Sites.Backup($name, $saveas, "true")
write-host "$n2 backed up to $saveas."
}
该脚本在以我们的域备份用户身份运行的当前安装中完美运行。
在新的机器上,以备份用户身份运行时会失败——提示“位于http://外部网络/“无法找到。事实上,该 URL 确实有效,所以我相当确定这不是什么愚蠢的事情,而是一些权限问题。特别是因为,当从我的安全上下文执行时,脚本运行完美。
我尝试让备份用户成为场所有者,并将他添加到外联网上的各个网站集管理员组中。外联网和内联网服务器之间的一个主要区别是外联网具有替代访问映射(用于https://xnet.example.com) 并且还使用表单身份验证进行该映射。无论如何,我需要设置什么权限(或其他巫术)才能使此脚本正常工作?
答案1
我对此有点模糊,因为已经有一段时间了,而我面前没有有问题的服务器,但我认为我遇到了类似的问题。
我们有一个 SharePoint 服务站点,无论我做什么都绝对不会备份 - 直到我为来宾用户创建了具有写访问权限的共享(我认为)。
这确实是一个糟糕的答案,我稍后会更新更多细节。
更新:根据上述评论者的说法,我的也是使用 stsadmin 实现的。除了托管 sharepoint 本身的机器之外,我没有列举任何特定站点或主机。