2016-07-04 15 views
0

PowerShellスクリプトを使用してSQL Server 2008 R2をサイレントモードでインストールしようとしています。 インストールが完了したら、インストールが成功したことを確認する必要があります。 インストールに成功するために、sqlsetup.logファイルの終了コードのようなものをチェックする方法はありますか?続きSQL Server 2008 R2の正常インストールの確認方法

はコードで、私は現在使用している: -

# Read current directory 
$ScriptPath = $MyInvocation.MyCommand.Path 
$ParentDir = Split-Path $scriptpath 

#Read Config file from current directory 
$ConfigFile = $ParentDir + '\ConfigurationFile.ini' 
Write-Host $ConfigFile 
#Holds base setup from current directory 
$SetupFile=$ParentDir + '\setup.exe' 
Write-Host $SetupFile 
$SP3SetupFile=$ParentDir + '\SQLServer2008R2_SP3\Setup.exe' 
Write-Host $SP3SetupFile 

#Start of the log file 
$Start="========================================================================================" 
$Start | Out-File $env:temp\InstallSQL2008R2_log.txt -append 

#Printsd the current date and time in log file 
$Date=Get-Date 
$Date | Out-File $env:temp\InstallSQL2008R2_log.txt -append 

#Starting with the SQL base installation 
$InstallBaseSQL="Installing SQL Server 2008 R2" 
$InstallBaseSQL | Out-File $env:temp\InstallSQL2008R2_log.txt -append 

#Installs SQL Server 2008 R2 Standard Edition 
& "$SetupFile" /ConfigurationFile="$ConfigFile" 

#Checks whether properly installed 
$ExistString = Select-String -Path "$env:temp\SqlSetup*.log" -Pattern "Setup closed with exit code: 0x00000000" 
if($ExistString) 
    { 
     $SuccessStatus = "Installation of SQL Server 2008 R2 completed" 
     $SuccessStatus | Out-File $env:temp\InstallSQL2008R2_log.txt -append 
     #write-host "Installation of SQL Server 2008 R2 completed" 
     #out-file $env:temp\InstallSQL2008R2_log.txt -append 
     # $log.name | out-file $C:\FileContainingString.txt -append 
    } 
    else 
    { 
     $failStatus = "Installation couldn't complete, for more details please check sqlsetup.txt in temp folder" 
     $FailStatus | Out-File $env:temp\InstallSQL2008R2_log.txt -append 
    } 

#Installing sql patch 
$InstallSQLSP3="Installing SQL Server 2008 R2 SP3" 
$InstallSQLSP3 | Out-File $env:temp\InstallSQL2008R2_log.txt -append 

#Install SQL Server 2008 R2 SP3 Patch 
& "$SP3SetupFile" /instancename=MSSQLSERVER /quiet 

#Completion Message 
$PatchComplete="Installation of SQL Server 2008 R2 SP3 completed3" 
$PatchComplete | Out-File $env:temp\InstallSQL2008R2_log.txt -append 


$End="========================================================================================" 
$End | Out-File $env:temp\InstallSQL2008R2_log.txt -append 
+0

誰もがすべての出力を新しい変数に保存してからファイルに保存するのを見たことはありませんか?なぜ文字列を 'Out-File'に直接パイプしないのですか?とにかく、ログファイルをチェックするのではなく、[this post](http://stackoverflow.com/questions/3257328/detecting-if-sql-server-2008-is-installed?rq=1)のレジストリフラグをチェックして、エラーコード '0x00000000'(ログの最後の2行目)はエラーを意味しません。 –

答えて

0
if ((Get-Content "$env:temp\SqlSetup*.log" -Encoding Unicode)[-2] -like "*0x00000000") 
{ 
    ## Successfully installed 
} 

のエラーのログをチェックすると、100%ではないかもしれないが、あなたはあまりにもHKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\100\Bootstrap Release\1033\CurrentVersion\Versionか何かを確認したいことがあります。

関連する問題