Start-Service
啟動一或多個已停止的服務。
語法
Start-Service [-Name] <string[]> [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Start-Service -DisplayName <string[]> [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Start-Service [-InputObject <ServiceController[]>] [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
描述
Start-Service Cmdlet 會針對每一個指定的服務,傳送啟動訊息給 Windows 服務控制器。如果服務已在執行中,此訊息就會被略過,而不會產生任何錯誤。您可以依服務名稱或是顯示名稱指定服務,或是使用 InputObject 參數提供代表要啟動之服務的服務物件。
參數
-DisplayName <string[]>
指定要啟動之服務的顯示名稱。允許使用萬用字元。
必要? |
true |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Exclude <string[]>
忽略指定的服務。此參數的值用於限定 Name 參數。輸入名稱元素或模式,例如 "s*"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Include <string[]>
只啟動指定的服務。此參數的值用於限定 Name 參數。輸入名稱元素或模式,例如 "s*"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-InputObject <ServiceController[]>
指定表示要啟動之服務的 ServiceController 物件。請輸入包含物件的變數,或輸入可取得物件的命令或運算式。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByValue) |
接受萬用字元? |
false |
-Name <string[]>
指定要啟動之服務的服務名稱。
參數名稱為選擇性。可使用 "-Name" 或其別名 "-ServiceName",亦可省略參數名稱。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-PassThru
傳回代表服務的物件。根據預設,此 Cmdlet 不會產生任何輸出。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Confirm
在執行命令前先提示確認。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-WhatIf
說明執行命令時將會發生何種情況,但不會實際執行命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.ServiceProcess.ServiceController、System.String 您可經由管道將代表服務或是包含服務名稱之字串的物件輸出至 Start-Service。 |
輸出 |
無或 System.ServiceProcess.ServiceController 當您使用 PassThru 參數時,Start-Service 會產生代表此服務的 System.ServiceProcess.ServiceController 物件,否則,這個 Cmdlet 不會產生任何輸出。 |
附註
您也可以利用內建的別名 "sasv" 來參照 Start-Service。如需詳細資訊,請參閱 about_Aliases。
Start-Service 只能在目前使用者具有相關執行權限時控制該服務。如果命令無法正常運作,可能表示您不具有必要權限。
若要尋找系統上所有服務的服務名稱和顯示名稱,請輸入 "Get-Service"。此服務名稱顯示於 Name 欄,顯示名稱則顯示於 DisplayName 欄。
您只能啟動具有 "Manual" 或 "Automatic" 等啟動類型的服務,而不能啟動具有 "Disabled" 啟動類型的服務。如果 Start-Service 命令失敗且出現「無法啟動服務 <服務名稱> (於電腦上)」訊息,請使用 Get-WmiObject 命令找出服務的啟動類型,並在必要時,使用 Set-Service 命令變更服務的啟動類型。
有些像是效能記錄及警示 (SysmonLog) 的服務會在沒有工作要執行時自動停止。當 Windows PowerShell 啟動迅速停止自身的服務時,它會顯示下列訊息:「<顯示名稱> 服務啟動失敗。」
範例 1
C:\PS>start-service -name eventlog
描述
-----------
這個命令會啟動本機電腦上的 EventLog 服務。它會使用 Name 參數,依據服務名稱來識別該服務。
範例 2
C:\PS>start-service -displayname *remote* -whatif
描述
-----------
這個命令會告訴您若啟動顯示名稱包含 "remote" 的服務時,將會發生何種情況。它會使用 DisplayName 參數,根據服務的顯示名稱 (而不是服務名稱) 來指定服務。然後,它會使用 WhatIf 參數告訴您如果執行此命令將會發生何種情況,而不會實際去執行此命令。
範例 3
C:\PS>$s = get-service wmi
C:\PS>start-service -InputObject $s -passthru | format-list >> services.txt
描述
-----------
這些命令會啟動電腦上的 Windows Management Instrumentation (WMI) 服務,並且在 services.txt 檔案中加入一筆動作記錄。第一個命令會用 Get-Service Cmdlet 取得代表 WMI 服務的物件,並將它儲存在 $s 變數中。
第二個命令會用 Start-Service Cmdlet 啟動 WMI 服務。它會使用 InputObject 參數,將包含 WMI 服務物件的 $s 變數傳遞到 Start-Service,以便識別服務。接著,它會使用 PassThru 參數建立代表服務啟動的物件。如果沒有這個參數,Start-Service 便不會建立任何輸出。
管線運算子 (|) 會將 Start-Service 建立的物件傳遞到 Format-List Cmdlet,並由此 Cmdlet 將物件格式化成其屬性的清單。附加重新導向運算子 (>>) 會將輸出重新導向 services.txt 檔案,並從這裡將輸出加入至現有檔案的結尾。
範例 4
C:\PS># start-service
描述
-----------
這一系列的命令會顯示如何啟動具有 "Disabled" 啟動類型的服務。使用 Start-Service Cmdlet 啟動 Telnet 服務 (tlntsvr) 的第一個命令執行失敗。
C:\PS>start-service tlntsvr
Start-Service:服務 'Telnet (TlntSvr)' 因為下列錯誤而無法啟動:無法啟動服務 TlntSvr (於電腦 '.' 上)。
位於第 1 行,第 14 個字元
+ start-service <<<< tlntsvr
第二個命令會使用 Get-WmiObject Cmdlet 取得 Tlntsvr 服務。這個命令會擷取在 StartMode 欄位中具有啟動類型屬性的物件。結果顯示指出 Tlntsvr 服務的啟動類型是 "Disabled"。
C:\PS> get-wmiobject win32_service | where-object {$_.Name -eq "tlntsvr"}
ExitCode : 0
Name : TlntSvr
ProcessId : 0
StartMode : Disabled
State : Stopped
Status : OK
接下來的命令會使用 Set-Service Cmdlet,將 Tlntsvr 服務的啟動類型變更成 "Manual"。
C:\PS> set-service tlntsvr -startuptype manual
現在,我們可以重新提交 Start-Service 命令。這次命令會執行成功。
C:\PS> start-service tlntsvr
若要確認命令是否執行成功,請使用 Get-Service 命令。
請參閱
概念
Get-Service
Suspend-Service
Stop-Service
Restart-Service
Resume-Service
Set-Service
New-Service