2016-09-26 97 views
0

我設法使用腳本在乾淨的機器上安裝SQL服務器。驗證SQLServer安裝是否需要重啓

但有時腳本無法運行,因爲機器需要重新啓動。

我問:

1.Is有什麼辦法,如果在安裝的SQLserver
需要 2.如果需要重新啓動重啓檢測,重新啓動它會自動

+0

對不起,我的意思是MS SQL Server的 – AndyRaito

+0

你的意思是說'你想自動SQL服務器通過cmd行安裝並尋找重啓的方法「 – TheGameiswar

+0

是的。由於在我的腳本中,當需要重新啓動時,安裝總是失敗。如果在安裝驗證過程中需要重新啓動,我正在尋找可以重新啓動的方式。 – AndyRaito

回答

0

總之,當重新啓動需要時,該值低於地方登錄註冊處..

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired 

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending 

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager 

安裝之前,您可以運行以下PowerShell腳本..

#Adapted from https://gist.github.com/altrive/5329377 
#Based on <http://gallery.technet.microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542> 
function Test-PendingReboot 
{ 
if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA Ignore) { return $true } 
if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA Ignore) { return $true } 
if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true } 
try { 
    $util = [wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities" 
    $status = $util.DetermineIfRebootPending() 
    if(($status -ne $null) -and $status.RebootPending){ 
    return $true 
    } 
}catch{} 

return $false 
} 

如果上述函數返回true,你可以在下面的命令運行..

Restart-Computer -ComputerName "Server01", "Server02", "localhost" 

服務器*表示某些名稱服務器和本地主機代表本地計算機

參考文獻:
http://ilovepowershell.com/2015/09/10/how-to-check-if-a-server-needs-a-reboot/

+0

太棒了!在安裝過程中檢測到重新啓動時,我正在考慮重新啓動。從來沒有想過在重啓之前重啓。這應該工作。非常感謝。 – AndyRaito

0

或者從命令行(cmd)安裝午餐所以

C:\Users\username\Downloads\SQLEXPR_x64_ENU.exe /SKIPRULES=RebootRequiredCheck /ACTION=Install

拳頭就是設置EXE位於跳過重啓支票的地址和第二參數