我们正在为一些使用 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://extranet/的 Web 应用程序”。事实上,那个 url 确实有效,所以我相当确定它不是那么愚蠢,而是一些权限问题。特别是因为,当从我的安全上下文中执行时,脚本可以完美运行。
我尝试将备份用户设置为场所有者,并将他添加到外联网上的各种网站集管理员组。Extranet 和 Intranet 服务器之间的一个主要区别是 Extranet 具有备用访问映射(对于https://xnet.example.com)并且还使用表单身份验证进行该映射。无论如何,我需要设置什么权限(或其他巫术)才能让这个脚本正常工作?
我对此有点模糊,因为它已经有一段时间了,我面前没有有问题的服务器,但我认为我有类似的问题。
我们有一个共享点服务站点,无论我做什么,它都绝对不会备份——直到我为来宾用户创建了一个具有写访问权限的共享(我认为)。
这真的是一个糟糕的答案,稍后会更详细地更新它。
更新:根据上面的评论者,我的也是使用 stsadmin 实现的。除了托管共享点的机器之外,我没有列举任何特定的站点或主机。