iT邦幫忙

DAY 15
2

強而有力的 Windows PowerShell系列 第 15

使用 Windows PowerShell 管理服務 - 停止、啟動、暫停與重新啟動服務

  • 分享至 

  • twitterImage
  •  

這次要介紹如何停止、啟動、暫停與重新啟動服務。
停止、啟動、暫停與重新啟動服務的 cmdlet,都有一套相同的語法,亦即可以指定服務的一般名稱(亦即 Name 欄位所顯示的值)或顯示名稱(亦即 DisplayName 欄位所顯示的值),且名稱值可以接受用逗號來區隔的清單以及萬用字元。要注意的是,必須具有權限,才能進行停止、啟動、暫停與重新啟動服務的操作。所以如果命令無法正常被執行,則表示您可能不具有必要的權限。

以下面的程式碼來說,會先停止列印緩衝多工處理器的服務,然後再重新啟動列印多工緩衝處理器:

$svc = "Spooler"
$svcDN = "Print Spooler"
# 使用 Confirm 參數確認是否要停止服務,搭配 Force 強制停止服務
Write-Host "請確認是否將停止 $svc"
Stop-Service -Name $svc -Confirm -Force
if($? -eq "True") {
  Write-Host "執行成功!" `n
}
else {
  Write-Host "執行失敗!" `n
}

# 使用 DisplayName 指定要啟動顯示名稱為 Print Spooler 的服務
Write-Host "即將啟動 $svcDN"
Start-Service -DisplayName $svcDN
if($? -eq "True") {
  Write-Host "執行成功!" `n
}
else {
  Write-Host "執行失敗!" `n
}

由於 Stop-Service 命令會停止本機電腦上的 Spooler 服務服務,也會同時停止依存於 Spooler 服務的服務,因此最好先在 Stop-Service 命令前面加上 Get-Service 列出會依存於此 Spooler 服務的服務,不然就是要像上面使用 Force 參數強制停止服務。

如下所是即是使用 Get-ServiceStop-Service cmdlet 來強制停止列印多工緩衝處理器的服務:

$svc = "Spooler"
Write-Host "列出與列印多工緩衝處理器相依的服務"
Get-Service $svc -DependentServices
Write-Host "強制停止列印多工緩衝處理器的服務"
Write-Host
Get-Service $svc | Stop-Service -Confirm -Force
Write-Host
Write-Host "列出與列印多工緩衝處理器相依的服務"
Get-Service $svc -DependentServices

Restart-Service cmdlet 則會先停止服務,然後再啟動服務,其用法與上述的服務 cmdlet 相同。如果服務早就已經停止,則不會通知我們任何錯誤,而會直接啟動服務。在此舉個比較複雜的例子,先取得以 we 開頭的服務清單,接著檢查服務是否處於停止的狀態,然後重新啟動服務,但WebClient 這個服務除外,可以使用如下的命令:

cls
Write-Host "以 we 開頭的服務清單"
Get-Service we* | Format-Table -AutoSize
Write-Host `n "將重新啟動所有以 we 開頭的服務,但 WebClient 除外"
Get-Service we* | Where-Object {$_.Status -eq "Stopped"} | Restart-Service -Exclude WebClient
Write-Host `n "檢查以 we 開頭的服務清單執行狀態"
Get-Service we* | Format-List Status, Name, DisplayName

至於 Suspend-Service 則是用來暫停有支援暫停及恢復動作的服務,因此一般會先使用 Get-Service cmdlet 搭配 CanPauseAndContinue 屬性來判斷特定服務是否可以暫停。以下面的指令而言,先顯示有支援暫停及恢復動作的服務之名稱、顯示名稱與支援暫停及恢復動作的真假與否,然後再使用 Suspend-Service 顯示如果暫停顯示名稱為 Windows Management Instrumentation 的服務將會發生何種情況。如果真的要暫停這個服務,請移除 WhatIf 參數,然後再執行一次這個命令即可。

# 以列表方式顯示支援暫停及恢復動作的服務
Write-Host "支援暫停及恢復動作的服務有:"
Get-Service | Where-Object {$_.CanPauseAndContinue -eq "True"}  |`
  Format-Table Name, DisplayName, CanPauseAndContinue -AutoSize

Write-Host "如果暫停 Windows Management Instrumentation 的服務將會發生何種情況"
Suspend-Service -Displayname "Windows Management Instrumentation" -WhatIf


上一篇
使用 Windows PowerShell 管理服務 - 取得服務狀態
下一篇
使用 Windows PowerShell 管理服務 - 變更服務的屬性
系列文
強而有力的 Windows PowerShell33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言