啟動、停止與暫停服務並且變更服務的屬性。

語法

Set-Service [-Name] <string> [-描述 <string>] [-DisplayName <string>] [-PassThru] [-StartupType {<Automatic> | <Manual> | <Disabled>}] [-Status <string>] [-ComputerName <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]

Set-Service [-描述 <string>] [-DisplayName <string>] [-InputObject <ServiceController>] [-PassThru] [-StartupType {<Automatic> | <Manual> | <Disabled>}] [-Status <string>] [-ComputerName <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]

描述

Set-Service Cmdlet 會變更本機或遠端服務的屬性,包含狀態、描述、顯示名稱和啟動模式。您可以使用這個 Cmdlet 啟動、停止或暫停 (暫停) 服務。若要識別服務,請輸入服務名稱或提交服務物件,或者透過管線將服務名稱或服務物件傳遞給 Set-Service。

參數

-ComputerName <string[]>

指定一個或多個電腦。預設為本機電腦。

請輸入遠端電腦的 NetBIOS 名稱、IP 位址或完整網域名稱。若要指定本機電腦,請輸入電腦名稱、句點 (.) 或 "localhost"。

此參數並不依存於 Windows PowerShell 遠端。即使沒有將電腦設定成執行遠端命令,也可以使用 Set-Service 的 ComputerName 參數。

必要?

false

位置?

named

預設值

local computer

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-描述 <string>

指定服務的新描述。

服務描述顯示於 [電腦管理] 中的 [服務] 主控台。Description 並不是 Get-Service 取得之 ServiceController 物件的屬性。若要檢視服務描述,請使用 Get-WmiObject 取得表示服務的 Win32_Service 物件。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-DisplayName <string>

指定服務的新顯示名稱。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <ServiceController>

指定表示要變更之服務的 ServiceController 物件。請輸入包含物件的變數,或者輸入取得物件的命令或運算式,如 Get-Service 命令。您也可以經由管道將服務物件傳遞給 Set-Service。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-Name <string>

指定要變更之服務的服務名稱。不允許使用萬用字元。您也可以透過管道將服務名稱傳遞給 Set-Service。

必要?

true

位置?

1

預設值

接受管線輸入?

true (ByValue, ByPropertyName)

接受萬用字元?

false

-PassThru

傳回代表已變更之服務的物件。根據預設,此 Cmdlet 不會產生任何輸出。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-StartupType <ServiceStartMode>

變更服務的啟動模式。有效的 StartupType 值包括:

-- Automatic (自動):隨系統啟動而啟動。

-- Manual (手動):由使用者或程式啟動才啟動。

-- Disabled (停用):無法啟動。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Status <string>

啟動、停止或暫停 (暫止) 服務。有效的值包括:

-- Running (執行中):啟動服務。

-- Stopped (已停止):停止服務。

-- Paused (已暫停):暫停服務。

必要?

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

您可以經由管道將服務物件或包含服務名稱的字串輸出至 Set-Service。

輸出

這個 Cmdlet 不會傳回任何物件。

附註

若要在 Windows Vista 與較新版本的 Windows 上使用 Set-Service,請以 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

Set-Service 只能在目前使用者具有相關執行權限時控制該服務。如果命令無法正常運作,可能表示您不具有必要權限。

若要尋找系統上所有服務的服務名稱和顯示名稱,請輸入 "Get-Service"。此服務名稱顯示於 Name 欄,顯示名稱則顯示於 DisplayName 欄。

範例 1

C:\PS>set-service -name lanmanworkstation -DisplayName "LanMan Workstation"

描述
-----------
這個命令會將 lanmanworkstation 服務的顯示名稱變更為 "LanMan Workstation" (預設為 "Workstation")。






範例 2

C:\PS>get-wmiobject win32_service -filter "name = 'SysmonLog'"

ExitCode  : 0
Name      : SysmonLog
ProcessId : 0
StartMode : Manual
State     : Stopped
Status    : OK

C:\PS> set-service sysmonlog -startuptype automatic

C:\PS> get-wmiobject win32_service -filter "name = 'SysmonLog'"

ExitCode  : 0
Name      : SysmonLog
ProcessId : 0
StartMode : Auto
State     : Stopped
Status    : OK

C:\PS> get-wmiobject win32_service | format-table Name, StartMode -auto

Name                                  StartMode
----                                  ---------
AdtAgent                              Auto
Alerter                               Disabled
ALG                                   Manual
AppMgmt                               Manual
...

描述
-----------
這些命令會取得 [效能記錄檔及警示] (SysmonLog) 服務的啟動類型、將啟動模式設為自動,然後顯示變更結果。

這些命令使用 Get-WmiObject Cmdlet 取得服務的 Win32_Service 物件,因為 Get-Service 傳回的 ServiceController 物件不包含啟動模式。

第一個命令會用 Get-WmiObject Cmdlet 取得代表 SysmonLog 服務的 Windows Management Instrumentation (WMI) 物件。這個命令的預設輸出顯示服務的啟動模式。

第二個命令會用 Set-Service 將啟動模式變更成自動。接著,重複執行第一個命令以顯示此項變更。

最後一個命令顯示電腦上所有服務的啟動模式。






範例 3

C:\PS>set-service -name Schedule -computername S1 -description "Configures and schedules tasks."

C:\PS> get-wmiobject win32_service -computername s1 | where-object {$_.Name -eq "Schedule"} | format-list Name, Description

描述
-----------
這些命令會變更 S1 遠端電腦上「工作排程器」服務的描述,接著顯示變更結果。

這些命令使用 Get-WmiObject Cmdlet 取得服務的 Win32_Service 物件,因為 Get-Service 傳回的 ServiceController 物件不包含服務描述。

第一個命令會用 Set-Service 命令變更其描述。它會使用服務的服務名稱 "Schedule" 來識別此項服務。

第二個命令會用 Get-WmiObject Cmdlet 取得代表「工作排程器」服務之 WMI Win32_Service 的執行個體。在命令中的第一個元素會取得 Win32_service 類別的所有執行個體。

管線運算子 (|) 會將結果傳遞給 Where-Object Cmdlet,並由其選取 Name 屬性中包含 "Schedule" 值的執行個體。

另一個管線運算子會將結果傳送到 Format-List Cmdlet,並由其將輸出格式化成為僅包含 Name 和 Description 屬性的清單。






範例 4

C:\PS>set-service winrm -status Running -passthru -computername Server02

描述
-----------
這個命令會啟動 Server02 電腦上的 WinRM 服務。該命令使用 Status 參數指定需要的狀態 (「執行中」),並使用 PassThru 參數指示 Set-Service 傳回代表 WinRM 服務的物件。






範例 5

C:\PS>get-service schedule -computername S1, S2 | set-service -status paused

描述
-----------
這個命令會暫停 S1 與 S2 遠端電腦上的 Schedule 服務。該命令會使用 Get-Service Cmdlet 取得服務。管線運算子 (|) 將服務傳送到會將狀態變更為 [已暫停] 的 Set-Service Ccmdlet。






範例 6

C:\PS>$s = get-service schedule

C:\PS> set-service -inputobject $s -status stopped

描述
-----------
這些命令會停止本機電腦上的 Schedule 服務。

第一個命令會使用 Get-Service Cmdlet 取得 Schedule 服務,然後,會將服務儲存在 $s 變數中。

第二個命令使用 Set-Service Cmdlet 將 Schedule 服務的狀態變更為 [已停止]。它使用 InputObject 參數提交儲存於 $s 變數中的服務,然後使用 Status 參數指定需要的狀態。






請參閱




目錄