![]() |
1
7
我发现最好的方法是有一个Power Shell,它将等待一个挂起的计时器作业完成,然后再转到下一个任务,但您可以暂停,但这需要您检查以确保时间作业已完成。 诀窍是使用stsadm-o displaysolution-name轮询服务器。如果wsp安装在服务器场上,则该命令返回一些xml,如果有用于部署的计时器作业,则xml中有一个“SolutionDeploymentJob”标记。通过一个简单的循环,您可以等待时间作业完成 Function WaitForJobOn($name){ [xml]$val = stsadm -o displaysolution -name $name while($val.Solution.SolutionDeploymentJob) { $log.Info("waiting for a job on $name") sleep 5 [xml]$val = stsadm -o displaysolution -name $name } $log.Info("Job Compleated") }
用法:
需要注意的是,如果不将wsp添加到服务器场,则该函数将失败。 |
![]() |
2
2
我也遇到了这个问题。我绕过它的唯一方法是每次在部署/收回之前重新启动WindowsSharePointServices管理服务。 更新:我重新启动了WFE服务器,这个问题已经消失了。我希望我有更多的信息为什么,但经典的微软重启解决方案再次流行。 真烦人。 另一个更新:我刚刚发布了一个名为stsadm的命令 smartexecjobdefs 解决了这个问题。在这个 blog post ,我将讨论一个作业定义执行器,它在返回控制之前监视运行作业的完成情况。这个stsadm命令只是包装这个类。 |
![]() |
3
0
您需要在部署解决方案和尝试激活功能之间暂停—这有点像是一种竞争条件。 更多: 如果有几个web前端,连接速度很慢,或者服务器很忙,或者任何其他导致这类事情需要一些时间的事情,那么您就会遇到麻烦。批处理文件无法处理它-Powershell脚本可以在继续之前使用对象模型检查是否真正部署了解决方案。 |
![]() |
4
0
我也遇到过这个问题。每次我尝试部署解决方案时,都会复制一些文件,然后在复制所有文件之前,它会因此错误而停止。我没有任何证据,但我相信服务器上的防病毒软件正在锁定文件并进行干扰。 在我多次尝试部署解决方案(每次复制的文件都比以前多)之后,它最终成功了。 |
![]() |
5
0
我发现,当在具有多个web前端服务器的SharePoint场中使用Windows SharePoint Administration Service(SPAdmin)时,sp1中偶尔会出现故障。 我建议禁用spadmim并使用psexec等远程执行工具运行stsadm-o execadmsvcjobs。 例子: psexec.exe@serverlist.txt“C:\程序文件\公用文件\ Microsoft共享\ Web服务器扩展名\12\BIN\stsadm.exe”-o execadmsvcjobs |