2016-06-06 13 views
3

Ich versuche, einen Windows-Dienst mit PowerShell zu erstellen und zu starten.Der Dienst kann nicht auf dem Computer gestartet werden.

Der Dienst wird erstellt, kann aber nicht gestartet werden, wenn ich verschiedene Namen neben einem bestimmten Namen verwende.

Wenn ich den Dienst mit dem Namen der EXE-Datei erstellen, kann es gestartet werden, aber wenn ich einen anderen Namen gebe, kann es nicht gestartet werden.

Ich führe das PowerShell-Skript als Administrator aus.

Irgendwelche Ratschläge?

function InstallService(
    [string] $MsDeployHost, 
    [string] $ServiceName, 
    [string] $DisplayName, 
    [string] $ServicePath, 
    [string] $ServiceDescription, 
    [object] $Credential) { 
    if($MsDeployHost -eq "local") {   
     New-Service -name $ServiceName -binaryPathName $ServicePath -displayName $ServiceName -StartupType Automatic 
     Start-Service -name $ServiceName 
    } else { .... 

Der Fehler erhalte ich: Start-Service: Durch den folgenden Fehlerdienst 'Service1 (Service1)' kann nicht gestartet werden: '' Dienst kann nicht Service1 auf Computer starten.

Wenn ich versuche, es manuell zu starten, erhalte ich: „Fehler 1053: Der Dienst in einem angemessenen Frist nicht auf die Start- oder Steuerungsanforderung reagieren“

+0

Bitte teilen Sie Ihren Code mit uns. –

+0

Define "startet nicht". Sie erhalten einen Fehler? Welcher Fehler? Gibt es etwas Relevantes im Ereignisprotokoll? Enthält '$ ServicePath' den vollständigen Pfad zur ausführbaren Datei einschließlich des ausführbaren Namens? –

+0

Ich erhalte den folgenden Fehler: –

Antwort

3

Das Problem ist, dass, wenn Ihr Dienst geschrieben Handle es, müssen Sie einen bestimmten Dienstname verwenden, um einen bestimmten Dienst auszuführen. Dies liegt daran, dass sich der Dienst beim Start beim Service Control Manager registrieren muss, um Start/Stopp-Benachrichtigungen zu empfangen und Statusaktualisierungen unter Verwendung seines Dienstnamens zu senden. Wenn Sie den Dienst unter einem anderen Namen installieren, aber die ausführbare Datei keine Möglichkeit hat, dies zu wissen (durch eine Konfigurationseinstellung oder Ähnliches), schlägt diese Registrierung fehl und der Dienst kann nicht gestartet werden (für das Betriebssystem wird es so aussehen) der Dienst antwortet nicht).

Sie können den Anzeigenamen wie gewünscht einstellen. Sie können jedoch keinen beliebigen Dienstnamen verwenden, es sei denn, der Dienst unterstützt dies.

Verwandte Themen