Sql server 获取SQL Server service pack静默安装的状态

Sql server 获取SQL Server service pack静默安装的状态,sql-server,powershell,Sql Server,Powershell,我正在开发一个自动化工具,在这里我必须对service pack升级进行端到端的自动化 从命令提示符执行静默安装命令 param([string]$servername,[string]$path) #param([string]$instance) #$path1="d:\sysdba\" #$path2= $path1 "+" $path Try { $SqlQuery = "SELECT @@SERVICENAME" $SqlConnection = New-Object Sys

我正在开发一个自动化工具,在这里我必须对service pack升级进行端到端的自动化

从命令提示符执行静默安装命令

param([string]$servername,[string]$path)
#param([string]$instance)

#$path1="d:\sysdba\"
#$path2= $path1 "+" $path


Try
{

$SqlQuery = "SELECT  @@SERVICENAME"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection



$SqlConnection.ConnectionString = "Server = $Servername; Database = master; Integrated Security = SSPI;"
write-host $SqlConnection.ConnectionString 

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$instancename = $DataSet.Tables[0].rows[0].Column1
Write-Host $instancename 
#$DataSet.Tables[0] | out-file "C:\temp\version.csv"



#$command=$path1

write-host $servername
write-host $instancename

$arg1="/instancename=$instancename"
$arg2= "/quiet" 
$arg3= "/IACCEPTSQLSERVERLICENSETERMS=TRUE"

write-host $arg1
write-host $instancename
# D:\sysdba\SQLServer2008R2SP2-KB2630458-x64-ENU.exe  /instancename=SQLINST /quiet  /IACCEPTSQLSERVERLICENSETERMS=”TRUE” | Out-File d:\sysdba\test.txt


& $path $arg1 $arg2 $arg3

          Write-Host "Success." 
Write-Host "true"  | out-file "D:\temp\installation.csv"

}

Catch

{
    Write-Host -BackgroundColor Red -ForegroundColor White "Fail" 


        $errText =  $Error[0].ToString() 


            if ($errText.Contains("network-related")) 


        {Write-Host "Connection Error. Check server name, port, firewall."}   

        Write-Host $errText 


        continue 


}
代码运行得非常好,我的问题是如何知道安装失败并通过重新启动,我看到的选项是Microsoft提供的summary.txt文件,但我需要继续检查


有什么方法可以检查安装过程的完成情况吗?

启动过程-等待“…-ENU.exe”-ArgumentList”/instancename=…/quiet…”
。另一方面,如果您的意思是“在那之后如何验证升级工作”,那相当简单:检查
服务器属性('productversion')
。如果成功,此版本应与安装文件的产品版本匹配(内部版本号为0的版本除外)。如果没有,人类应该阅读日志以了解发生了什么。启动进程-等待“…-ENU.exe”-ArgumentList“/instancename=…/quiet…”这会起作用吗??serverproperty是检查sp版本的一种方法,但如何执行?我将获得一些安装状态,因此,我不会写入&$path$arg1$arg2$arg3,而是写入启动进程-wait
启动进程-wait
将等待安装完成。但是,如果失败,它将不会返回有意义的错误代码。