[SharePoint 2013] Automatic deployment script

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
原文地址:https://www.cnblogs.com/s1nce/p/automatic_deployment_script.html