共用方式為


Start-Service

啟動一或多個已停止的服務。

語法

Start-Service
     [-InputObject] <ServiceController[]>
     [-PassThru]
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Service
     [-Name] <String[]>
     [-PassThru]
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Service
     [-PassThru]
     -DisplayName <String[]>
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

此 Cmdlet 僅適用於 Windows 平臺。

Cmdlet Start-Service 會將啟動訊息傳送至每個指定服務的 Windows 服務控制器。 如果服務已在執行中,則會忽略訊息,而不會發生錯誤。 您可以依服務名稱或顯示名稱來指定服務,也可以使用 InputObject 參數來提供服務物件,代表您想要啟動的服務。

範例

範例 1:使用服務名稱啟動服務

此範例會在本機計算機上啟動 EventLog 服務。 Name 參數會依服務名稱來識別服務。

Start-Service -Name "eventlog"

範例 2:顯示資訊而不啟動服務

此範例顯示如果您啟動的服務具有包含 「remote」 的顯示名稱,會發生什麼情況。

Start-Service -DisplayName *remote* -WhatIf

DisplayName 參數會依其顯示名稱而非服務名稱來識別服務。 WhatIf 參數會導致 Cmdlet 顯示當您執行命令但不會進行變更時會發生什麼事。

範例 3:啟動服務,並在文字文件中記錄動作

此範例會在計算機上啟動 Windows Management Instrumentation (WMI) 服務,並將動作的記錄新增至services.txt檔案。

$s = Get-Service wmi
Start-Service -InputObject $s -PassThru | Format-List >> services.txt

首先,我們使用 Get-Service 來取得代表 WMI 服務的物件,並將其儲存在變數中 $s 。 接下來,我們會啟動服務。 如果沒有 PassThru 參數,Start-Service則不會建立任何輸出。 管線運算子 (|) 會將 物件輸出 Start-Service 傳遞至 Format-List Cmdlet,以將物件格式化為其屬性的清單。 附加重新導向運算子 (>>) 會將輸出重新導向至services.txt檔案。 輸出會新增至現有檔案的結尾。

範例 4:啟動已停用的服務

此範例示範如何在服務啟動類型為 Disabled 時啟動服務。

PS> Start-Service tlntsvr
Start-Service : Service 'Telnet (TlntSvr)' cannot be started due to the following error: Cannot start service TlntSvr on computer '.'.
At line:1 char:14
+ Start-Service  <<<< tlntsvr

PS> Get-CimInstance win32_service | Where-Object Name -eq "tlntsvr"
ExitCode  : 0
Name      : TlntSvr
ProcessId : 0
StartMode : Disabled
State     : Stopped
Status    : OK

PS> Set-Service tlntsvr -StartupType manual
PS> Start-Service tlntsvr

第一次嘗試啟動 Telnet 服務 (tlntsvr) 失敗。 此命令 Get-CimInstance 會顯示 Tlntsvr 服務的 StartMode 屬性為 Disabled。 Cmdlet 會將 Set-Service 開始類型變更為 Manual。 現在,我們可以重新提交 Start-Service 命令。 這次,命令會成功。 若要確認指令成功,請執行 Get-Service

參數

-Confirm

執行 Cmdlet 之前先提示您確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-DisplayName

指定要啟動之服務的顯示名稱。 允許通配符。

類型:String[]
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:True

-Exclude

指定此 Cmdlet 省略的服務。 此參數的值會 限定Name 參數。 輸入名稱專案或模式,例如 s*。 允許通配符。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-Include

指定此 Cmdlet 啟動的服務。 此參數的值會 限定Name 參數。 輸入名稱專案或模式,例如 s*。 允許通配符。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-InputObject

指定 代表要啟動之服務的 ServiceController 物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。

類型:ServiceController[]
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-Name

指定要啟動之服務的服務名稱。

參數名稱是選擇性的。 您可以使用 Name 或其別名 ServiceName,或省略參數名稱。

類型:String[]
別名:ServiceName
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-PassThru

傳回物件,表示服務。 根據預設,此 Cmdlet 不會產生任何輸出。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

ServiceController

您可以使用管線將服務物件傳送至此 Cmdlet。

String

您可以使用管線將包含服務名稱的字串傳送至此 Cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

ServiceController

當您使用 PassThru 參數時,這個 Cmdlet 會 傳回代表服務的 ServiceController 物件。

備註

PowerShell 包含下列的 Start-Service別名:

  • Windows:
    • sasv

此 Cmdlet 僅適用於 Windows 平臺。

  • Start-Service 只有在目前使用者具有執行這項操作的許可權時,才能控制服務。 如果命令無法正常運作,您可能沒有必要的許可權。
  • 若您要在您的系統上尋找服務名稱與顯示服務名稱,請輸入 Get-Service。 服務名稱會出現在 [名稱] 資料行中,而顯示名稱會出現在 DisplayName 數據行中
  • 您只能啟動啟動類型為手動、自動或自動的服務(延遲啟動)。 您無法啟動啟動類型為 Disabled 的服務。 Start-Service如果命令失敗並出現訊息Cannot start service \<service-name\> on computer,請使用 Get-CimInstance 來尋找服務的啟動類型,而且,如果需要,請使用 Set-Service Cmdlet 來變更服務的啟動類型。
  • 某些服務,例如效能記錄和警示 (SysmonLog) 會在沒有工作要做時自動停止。 當 PowerShell 啟動幾乎立即停止本身的服務時,它會顯示下列訊息: Service \<display-name\> start failed.