Set-Service
啟動、停止和暫停服務,並變更其屬性。
語法
Name (預設值)
Set-Service
[-Name] <String>
[-DisplayName <String>]
[-Credential <PSCredential>]
[-Description <String>]
[-StartupType <ServiceStartupType>]
[-Status <String>]
[-SecurityDescriptorSddl <String>]
[-Force]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InputObject
Set-Service
[-InputObject] <ServiceController>
[-DisplayName <String>]
[-Credential <PSCredential>]
[-Description <String>]
[-StartupType <ServiceStartupType>]
[-SecurityDescriptorSddl <String>]
[-Status <String>]
[-Force]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
此 Cmdlet 只能在 Windows 平臺上使用。
Set-Service Cmdlet 會變更服務的屬性,例如 Status、Description、DisplayName和 StartupType。
Set-Service 可以啟動、停止、暫停或暫止服務。 若要識別服務,請輸入服務名稱或提交服務物件。 或者,將服務名稱或服務物件沿管線傳送至 Set-Service。
範例
範例 1:變更顯示名稱
在此範例中,服務的顯示名稱已變更。 若要檢視原始顯示名稱,請使用 Get-Service。
Set-Service -Name LanmanWorkstation -DisplayName "LanMan Workstation"
Set-Service 使用 Name 參數來指定服務的名稱,LanmanWorkstation。
DisplayName 參數會指定新的顯示名稱,LanMan Workstation。
範例 2:變更服務的啟動類型
此範例示範如何變更服務的啟動類型。
Set-Service -Name BITS -StartupType Automatic
Get-Service BITS | Select-Object -Property Name, StartType, Status
Name StartType Status
---- --------- ------
BITS Automatic Running
Set-Service 會使用 Name 參數來指定服務的名稱,BITS。
StartupType 參數會將服務設定為 Automatic。
Get-Service 會使用 Name 參數來指定 BITS 服務,並將物件傳送至管線。
Select-Object 會使用 Property 參數來顯示 BITS 服務的狀態。
範例 3:變更服務的描述
此範例會變更 BITS 服務的描述,並顯示結果。
會使用 Get-CimInstance Cmdlet,因為它會傳回 Win32_Service 物件,其中包含服務的 Description。
Get-CimInstance Win32_Service -Filter 'Name = "BITS"' | Format-List Name, Description
Name : BITS
Description : Transfers files in the background using idle network bandwidth. If the service is
disabled, then any applications that depend on BITS, such as Windows Update or MSN
Explorer, will be unable to automatically download programs and other information.
Set-Service -Name BITS -Description "Transfers files in the background using idle network bandwidth."
Get-CimInstance Win32_Service -Filter 'Name = "BITS"' | Format-List Name, Description
Name : BITS
Description : Transfers files in the background using idle network bandwidth.
Get-CimInstance 將物件傳送下管線至 Format-List ,並顯示該服務的名稱和描述。 為了進行比較,命令會在更新描述之前和之後執行。
Set-Service 會使用 Name 參數來指定 BITS 服務。
Description 參數會指定服務描述的更新文字。
範例 4:啟動服務
在此範例中,會啟動服務。
Set-Service -Name WinRM -Status Running -PassThru
Status Name DisplayName
------ ---- -----------
Running WinRM Windows Remote Management (WS-Manag...
Set-Service 會使用 Name 參數來指定服務,WinRM。
Status 參數會使用 執行中 的值來啟動服務。
PassThru 參數會輸出一個顯示結果的 ServiceController 物件。
範例 5:暫停服務
此範例會使用管線來暫停以進行服務。
Get-Service -Name Schedule | Set-Service -Status Paused
Get-Service 會使用 Name 參數來指定 Schedule 服務,並將物件傳送至管線。
Set-Service 使用 Status 參數,將服務設定為 Paused。
範例 6:停止服務
此範例會使用變數來停止服務。
$S = Get-Service -Name Schedule
Set-Service -InputObject $S -Status Stopped
Get-Service 使用 Name 參數來指定服務,Schedule。 物件會儲存在 變數中,$S。
Set-Service 會使用 InputObject 參數,並指定儲存 $S的物件。
Status 參數會將服務設定為 已停止。
範例 7:停止遠端系統上的服務
此範例會停止遠端電腦上的服務。 如需詳細資訊,請參閱 Invoke-Command。
$Cred = Get-Credential
$S = Get-Service -Name Schedule
Invoke-Command -ComputerName server01.contoso.com -Credential $Cred -ScriptBlock {
Set-Service -InputObject $S -Status Stopped
}
Get-Credential 提示輸入使用者名稱和密碼,並將認證儲存在 $Cred 變數中。
Get-Service 會使用 Name 參數來指定 Schedule 服務。 物件會儲存在 變數中,$S。
Invoke-Command 會使用 ComputerName 參數來指定遠端電腦。
Credential 參數會使用 $Cred 變數登入計算機。
ScriptBlock 會呼叫 Set-Service。
InputObject 參數會指定儲存在 $S的服務物件。
Status 參數會將服務設定為 已停止。
範例 8:變更服務的認證
此範例會變更用來管理服務的認證。
$credential = Get-Credential
Set-Service -Name Schedule -Credential $credential
Get-Credential 提示輸入使用者名稱和密碼,並將認證儲存在 $credential 變數中。
Set-Service 會使用 Name 參數來指定 Schedule 服務。
Credential 參數會使用 $credential 變數,並更新 Schedule 服務。
範例 9:變更服務的 SecurityDescriptor
此範例會變更服務的 SecurityDescriptor。
$SDDL = "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;SU)"
Set-Service -Name "BITS" -SecurityDescriptorSddl $SDDL
SecurityDescriptor 會儲存在 $SDDL 變數中。
Set-Service 會使用 Name 參數來指定 BITS 服務。
SecurityDescriptorSddl 參數會使用 $SDDL 來變更 BITS 服務的 SecurityDescriptor。
範例 10:設定多個服務的啟動類型
Set-Service Cmdlet 一次只接受一個服務名稱。 不過,您可以使用管線將多個服務傳送至 Set-Service,以變更多個服務的組態。
Get-Service SQLWriter,spooler |
Set-Service -StartupType Automatic -PassThru |
Select-Object Name, StartType
Name StartType
---- ---------
spooler Automatic
SQLWriter Automatic
參數
-Confirm
在執行 Set-Service之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Credential
指定服務使用的帳戶做為 服務登入帳戶。
輸入用戶名稱,例如 User01 或 Domain01\User01,或輸入 PSCredential 物件,例如 Get-Credential Cmdlet 所產生的用戶名稱。 如果您輸入使用者名稱,此 Cmdlet 會提示您輸入密碼。
認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString 。
備註
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
此參數是在 PowerShell 6.0 中引進的。
參數屬性
| 類型: | PSCredential |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Description
指定一個服務的新描述。
服務描述會出現在 計算機管理、服務中。
Description 不是 Get-ServiceServiceController 對象的屬性。 若要查看服務描述,請使用 Get-CimInstance,它會傳回代表服務的 Win32_Service 物件。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-DisplayName
設定服務的新顯示名稱。
備註
一般而言,Set-Service 只能在 Windows 服務上運作,而不是驅動程式。 不過,如果您指定驅動程式的名稱,Set-Service 可以鎖定該驅動程式。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | DN |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Force
指定服務的停止模式。 此參數僅適用於使用 -Status Stopped 時。 如果啟用,Set-Service 會在目標服務停止之前停止相依服務。 根據預設,當其他執行中的服務相依於目標服務時,就會引發例外狀況。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定代表要變更之服務的 ServiceController 物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式,例如 Get-Service 命令。 您可以使用管線將服務物件傳送至 Set-Service。
參數屬性
| 類型: | ServiceController |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InputObject
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Name
指定要變更之服務的服務名稱。 不允許使用通配符字元。 您可以使用管線將服務名稱傳送至 Set-Service。
備註
一般而言,Set-Service 只能在 Windows 服務上運作,而不是驅動程式。 不過,如果您指定驅動程式的名稱,Set-Service 可以鎖定該驅動程式。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 服務名稱, SN |
參數集
Name
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-PassThru
會傳回代表已變更之服務的 ServiceController 物件。 根據預設,Set-Service 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SecurityDescriptorSddl
以 Sddl 格式指定服務的 SecurityDescriptor。 使用此參數呼叫 Set-Service 的帳戶必須具有WRITE_DAC和WRITE_OWNER許可權。 如需詳細資訊,請參閱 服務安全性和存取權限。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | sd |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-StartupType
指定服務的啟動模式。
此參數可接受的值如下:
- 自動 - 該服務是在系統啟動時由作業系統啟動的。 如果自動啟動的服務相依於手動啟動的服務,系統啟動時也會自動啟動手動啟動服務。
- AutomaticDelayedStart - 在系統開機后不久啟動。
- 停用 - 服務已停用,且無法由使用者或應用程式啟動。
- InvalidValue - 沒有作用。 Cmdlet 不會傳回錯誤,但服務的 StartupType 不會變更。
- 手動 - 服務只會由使用者使用服務控制管理員或應用程式手動啟動。
參數屬性
| 類型: | ServiceStartupType |
| 預設值: | None |
| 接受的值: | Automatic, AutomaticDelayedStart, Disabled, InvalidValue, Manual |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | StartMode, SM, ST, 啟動類型 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Status
指定服務的狀態。
此參數可接受的值如下:
- 暫停。 暫停服務。
- 執行。 啟動服務。
- 已停止。 停止服務。
參數屬性
| 類型: | String |
| 預設值: | None |
| 接受的值: | Paused, Running, Stopped |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WhatIf
顯示當 Set-Service 執行時會發生什麼事。 該 Cmdlet 未被執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 無線 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
ServiceController
您可以透過管道傳遞服務物件到此 cmdlet。
String
您可以使用管線將包含服務名稱的字串傳送至此「Cmdlet」。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
ServiceController
當您使用 PassThru 參數時,這個 Cmdlet 會傳回 ServiceController 物件。
備註
此 Cmdlet 僅適用於 Windows 平臺。
Set-Service 需要提升權限。 使用 [以系統管理員身分執行] 選項 。
Set-Service 只有在目前使用者具有管理服務的許可權時,才能控制服務。 如果命令無法正確運作,您可能沒有必要的許可權。
若要尋找服務的服務名稱或顯示名稱,請使用 Get-Service。 服務名稱位於 [Name] 數據行中,而顯示名稱位於 DisplayName 數據行中。