Freigeben über


New-Service

Erstellt einen neuen Windows-Dienst.

Syntax

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

Beschreibung

Das New-Service Cmdlet erstellt einen neuen Eintrag für einen Windows-Dienst in der Registrierung und in der Dienstdatenbank. Ein neuer Dienst erfordert eine ausführbare Datei, die während des Diensts ausgeführt wird.

Mit den Parametern dieses Cmdlets können Sie den Anzeigenamen, die Beschreibung, den Starttyp und die Abhängigkeiten des Diensts festlegen.

Beispiele

Beispiel 1: Erstellen eines Diensts

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

Mit diesem Befehl wird ein Dienst namens TestService erstellt.

Beispiel 2: Erstellen eines Diensts mit Beschreibung, Starttyp und Anzeigename

$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

Mit diesem Befehl wird ein Dienst namens TestService erstellt. Es verwendet die Parameter zum New-Service Angeben einer Beschreibung, eines Starttyps und eines Anzeigenamens für den neuen Dienst.

Beispiel 3: Anzeigen des neuen Diensts

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

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

Mit diesem Befehl wird Get-CimInstance das Win32_Service-Objekt für den neuen Dienst abgerufen. Dieses Objekt enthält den Startmodus und die Dienstbeschreibung.

Beispiel 4: Löschen eines Diensts

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

In diesem Beispiel werden zwei Möglichkeiten zum Löschen des Diensts %%amp;quot;TestService%%amp;quot; veranschaulicht. Der erste Befehl verwendet die Löschoption von Sc.exe. Der zweite Befehl verwendet die Delete-Methode der zurückgegebenen Win32_Service Objekte Get-CimInstance .

Parameter

-BinaryPathName

Gibt den Pfad der ausführbaren Datei für den Dienst an. Dieser Parameter ist erforderlich.

Der vollqualifizierte Pfad zur Dienst-Binärdatei. Wenn der Pfad ein Leerzeichen enthält, muss er so zitiert werden, dass er richtig interpretiert wird. Beispiel: d:\my share\myservice.exe Sollte als '"d:\my share\myservice.exe"'.

Der Pfad kann auch Argumente für einen Automatischstartdienst enthalten. Beispiel: '"d:\my share\myservice.exe" arg1 arg2'. Diese Argumente werden an den Diensteinstiegspunkt übergeben.

Weitere Informationen finden Sie im lpBinaryPathName-Parameter der CreateServiceW-API .

Typ:String
Position:1
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Credential

Gibt das Konto an, das vom Dienst als Dienstanmeldungskonto verwendet wird.

Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Domain01\User01", oder geben Sie ein PSCredential-Objekt ein, z. B. ein vom Get-Credential Cmdlet generiertes Objekt. Wenn Sie einen Benutzernamen eingeben, werden Sie von diesem Cmdlet aufgefordert, ein Kennwort einzugeben.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.

Hinweis

Weitere Informationen zum Schutz von SecureString finden Sie unter "Wie sicher ist SecureString?".

Typ:PSCredential
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-DependsOn

Gibt die Namen anderer Dienste an, von denen der neue Dienst abhängt. Trennen Sie zum Eingeben mehrerer Dienstnamen die Namen durch Trennzeichen.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Description

Gibt eine Beschreibung des Diensts an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-DisplayName

Gibt einen Anzeigenamen für den Dienst an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Name

Gibt den Namen des Diensts an. Dieser Parameter ist erforderlich.

Typ:String
Aliase:ServiceName
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-StartupType

Legt den Starttyp des Diensts fest. Zulässige Werte für diesen Parameter:

  • Automatisch – Der Dienst wird gestartet oder vom Betriebssystem gestartet, beim Systemstart. Wenn ein automatisch gestarteter Dienst von einem manuell gestarteten Dienst abhängig ist, wird der manuell gestartete Dienst beim Systemstart ebenfalls automatisch gestartet.
  • Deaktiviert – Der Dienst ist deaktiviert und kann von einem Benutzer oder einer Anwendung nicht gestartet werden.
  • Manuell – Der Dienst wird nur manuell, von einem Benutzer, mithilfe des Dienststeuerungs-Managers oder einer Anwendung gestartet.
  • Start – Gibt an, dass der Dienst ein Gerätetreiber ist, der vom Systemladeprogramm gestartet wurde. Dieser Wert gilt nur für Gerätetreiber.
  • System – Gibt an, dass der Dienst ein Gerätetreiber ist, der von der Funktion "IOInitSystem()" gestartet wurde. Dieser Wert gilt nur für Gerätetreiber.

Der Standardwert ist "Automatisch".

Typ:ServiceStartMode
Zulässige Werte:Boot, System, Automatic, Manual, Disabled
Position:Named
Standardwert:Automatic
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

ServiceController

Dieses Cmdlet gibt ein Objekt zurück, das den neuen Dienst darstellt.

Hinweise

Um dieses Cmdlet auszuführen, starten Sie PowerShell mithilfe der Option "Als Administrator ausführen".

Um einen Dienst zu löschen, verwenden Sie Sc.exe, oder verwenden Sie das Get-CimInstance Cmdlet, um das Win32_Service-Objekt abzurufen, das den Dienst darstellt, und verwenden Sie dann die Delete-Methode, um den Dienst zu löschen. Das zurückgegebene Objekt Get-Service verfügt nicht über eine Löschmethode.