New-Service

建立新的 Windows 服務。

Syntax

New-Service
   [-Name] <String>
   [-BinaryPathName] <String>
   [-DisplayName <String>]
   [-Description <String>]
   [-StartupType <ServiceStartMode>]
   [-Credential <PSCredential>]
   [-DependsOn <String[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Cmdlet New-Service 會在登錄和服務資料庫中建立 Windows 服務的新專案。 新的服務需要一個在服務期間執行的可執行檔。

此 Cmdlet 的參數可讓您設定服務的顯示名稱、描述、啟動類型和相依性。

範例

範例 1:建立服務

New-Service -Name "TestService" -BinaryPathName 'C:\WINDOWS\System32\svchost.exe -k netsvcs'

此命令會建立名為TestService的服務。

範例 2:建立包含描述、啟動類型和顯示名稱的服務

$params = @{
  Name = "TestService"
  BinaryPathName = 'C:\WINDOWS\System32\svchost.exe -k netsvcs'
  DependsOn = "NetLogon"
  DisplayName = "Test Service"
  StartupType = "Manual"
  Description = "This is a test service."
}
New-Service @params

此命令會建立名為TestService的服務。 它會使用 的參數 New-Service 來指定新服務的描述、啟動類型和顯示名稱。

範例 3:檢視新的服務

Get-CimInstance -ClassName Win32_Service -Filter "Name='testservice'"

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

此命令會使用 Get-CimInstance 取得 新服務的 Win32_Service 物件。 此物件包含啟動模式和服務描述。

範例 4:刪除服務

sc.exe delete TestService
# - or -
(Get-CimInstance -Class Win32_Service -Filter "name='TestService'").delete()

此範例示範刪除TestService服務的兩種方式。 第一個命令使用 的 Sc.exedelete 選項。 第二個命令會使用傳回之Win32_Service物件的 Get-CimInstance Delete方法

參數

-BinaryPathName

指定服務的可執行檔案路徑。 此為必要參數。

服務二進位檔的完整路徑。 如果路徑包含空格,則必須加上引號,才能正確解譯。 例如, d:\my share\myservice.exe 應該指定為 '"d:\my share\myservice.exe"'

路徑也可以包含自動啟動服務的自變數。 例如: '"d:\my share\myservice.exe" arg1 arg2' 。 這些自變數會傳遞至服務進入點。

如需詳細資訊,請參閱 CreateServiceW API 的 lpBinaryPathName 參數。

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

指定服務用來做為服務登入帳戶的帳戶

輸入用戶名稱,例如User01或Domain01\User01,或輸入 PSCredential 物件,例如 Cmdlet 所產生的Get-Credential物件。 如果您輸入使用者名稱,此 Cmdlet 會提示您輸入密碼。

認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DependsOn

指定新服務相依的其他服務名稱。 若要輸入多個服務名稱,請使用逗號來分隔名稱。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

指定服務的描述。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayName

指定服務的顯示名稱。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定服務的名稱。 此為必要參數。

Type:String
Aliases:ServiceName
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-StartupType

設定服務的啟動類型。 此參數可接受的值為:

  • 自動 -服務是在系統啟動時啟動或由作業系統啟動。 如果自動啟動的服務依賴手動啟動的服務,以手動方式啟動的服務也會在系統啟動時自動啟動。
  • 已停用 - 服務已停用,且無法由使用者或應用程式啟動。
  • 手動 - 服務只會由使用者、使用服務控制管理員或應用程式手動啟動。
  • 開機 - 指出服務是系統載入器啟動的裝置驅動程式。 這個值僅適用於裝置驅動程式。
  • 系統 - 指出服務是 『IOInitSystem()』 函式啟動的裝置驅動程式。 這個值僅適用於裝置驅動程式。

預設值為 Automatic

Type:ServiceStartMode
Accepted values:Boot, System, Automatic, Manual, Disabled
Position:Named
Default value:Automatic
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

ServiceController

這個 Cmdlet 會傳回代表新服務的物件。

備註

若要執行此 Cmdlet,請使用 [ 以系統管理員 身分執行] 選項啟動 PowerShell。

若要刪除服務,請使用 Sc.exe,或使用 Get-CimInstance Cmdlet 取得 代表服務的 Win32_Service 對象,然後使用 Delete 方法來刪除服務。 傳回的對象 Get-Service 沒有 delete 方法。