Implement automatic deployment through windows task.
Add-PsSnapin Microsoft.SharePoint.PowerShell
$today = Get-Date
$targetDir = $today.ToString("yyyyMMdd")
$executeDir = "folder path"
$executeDir += $targetDir + "\"
$webURL = "http://server"
$subject = "Automatic Deployment Finished."
$tos = "xxx@xx"
$body = "Solutions deploy successfully.<br/>"
$errorMsg = ""
$sendingEmail = $true
if((Test-Path $executeDir) -eq $true){
$ps1s = Get-ChildItem -Path ($executeDir + "*.ps1")
if($ps1s.Count -gt 0){
foreach($ps1 in $ps1s){
Invoke-Expression ($executeDir + $ps1.Name)
}
$deployingWSPs = GET-SPSolution | Where-Object {$_.JobExists -eq $true}
While($deployingWSPs -ne $null -and $deployingWSPs.Count -gt 0){
Start-Sleep -Seconds 600
$deployingWSPs = GET-SPSolution | Where-Object {$_.JobExists -eq $true}
}
$deployingWSPs = GET-SPSolution | Where-Object {$_.Deployed -eq $true -and ($_.LastOperationEndTime - $today).Days -eq 0 -and $_.LastOperationResult.ToString() -like "*Failed*" }
if($deployingWSPs -ne $null -and $deployingWSPs.Count -gt 0){
$errorMsg += "Exception occur during deployment, please check in CA.<br/>"
}
if($error.Count -gt 0){
$errorMsg += "Exception occure during parse command.<br/>"
$errorMsg += $error[$error.Count - 1].Exception.Message
}
if($sendingEmail -eq $true){
$web = Get-SPWeb $webURL
if($errorMsg.Length -gt 0){
$body = $errorMsg
}
[Microsoft.SharePoint.Utilities.SPUtility]::SendEmail($web, $true, $false, $tos, $subject, $body)
$web.Dispose()
}
}
}
exit
本文介绍了一个使用PowerShell脚本实现Windows任务自动部署的方法。通过定时任务调用该脚本可以实现SharePoint解决方案的自动化部署。脚本首先设置目标文件夹路径,并检查指定路径下是否存在待执行的.ps1文件。若有,则依次执行这些文件,并监控部署状态直至完成。

被折叠的 条评论
为什么被折叠?



