osdgap
Goto Top

Mit Powershell einen Dienst anlegen

Hallo zusammen,

für eine App wird ein Dienst mit folgender Batchdatei eingerichtet:

sc create "%serviceName%" binPath= "\"%~dp0MeineApp.exe\" --instance \"%instanceName%\" --DataPath=\"%dataPath%\"" start= delayed-auto  

sc description "%serviceName%" "Der MeineAppServer nimmt HTTP(S) Anfragen entgegen und verarbeitet diese nach dem Standard der VDV-KA"  

Erste Lösung wäre die Batch über Powershell mit den nötigen Credentials aufrufen oder cooler das Erstellen des Dinstes unter Powershell ausführen.

Habe unter diesem Link ein HowTo gefunden: Dienst Erstellen How To

Habe das wie folgt u,gesetzt:

 $secpasswd = ConvertTo-SecureString "MeiPasswort!" -AsPlainText -Force  
$mycreds = New-Object System.Management.Automation.PSCredential ("ServiceUser", $secpasswd)  
$Drupath = $Env:programfiles
$serviceName = "MeineAppServer"  
$binaryPath = "C:\Program Files\MeineApp\MeineAppServer.exe"  
New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic -credential $mycreds 

Bekomme folgende Fehlermeldung:

" New-Service : Der Dienst "PersoDruServer (PersoDruServer)" kann aufgrund des folgenden Fehlers nicht erstellt werden: Zugriff verweigert"

Bitte um Unterstützung, vielen Dank im voraus.

Content-ID: 33707416318

Url: https://administrator.de/contentid/33707416318

Ausgedruckt am: 17.11.2024 um 15:11 Uhr

em-pie
Lösung em-pie 26.10.2023 um 10:20:31 Uhr
Goto Top
Moin,

" New-Service : Der Dienst "PersoDruServer (PersoDruServer)" kann aufgrund des folgenden Fehlers nicht erstellt werden: Zugriff verweigert"
Hast du die Powershell auch als Administrator gestartet?
7907292512
Lösung 7907292512 26.10.2023 aktualisiert um 10:23:13 Uhr
Goto Top
Zugriff verweigert
PowerShell-Konsole nicht elevated gestartet...

Sid.
osdgap
osdgap 26.10.2023 um 10:37:02 Uhr
Goto Top
Sh—t das wars ....DANKE euch
osdgap
osdgap 27.10.2023 um 11:49:38 Uhr
Goto Top
Ich kann über Powershell dn Diesnt und die Credentials mitgeben, allerdings bekomme ich leider nicht hin, das in der Batch Parameter mitgegeben werden die ich in Powershell nicht abbilden kann:

Die Batch zum anlegen des Dienstes mit Parametern und Credentials, das funktioniert:

set instanceName=%COMPUTERNAME%
set serviceName=MeineAppServer
set dataPath=\\mydomai.de\_DATA\VT\VT_A\Hersteller_Config\%instancename%

:InstallService
sc stop %serviceName% > nul
sc delete %serviceName% > nul
echo on
sc create "%serviceName%" binPath= "\"%~dp0MeineApp.exe\" --instance \"%instanceName%\" --DataPath=\"%dataPath%\"" obj= "mydomain\My_Service_User" password= "MeinPassWort!" start= delayed-auto  
sc description "%serviceName%" "Der MyAppServer nimmt HTTP(S) Anfragen entgegen und verarbeitet diese nach dem Standard der VDV-KA"  
goto :END

Ich würde das gerne mit Powershell abbilden, hier würde fehlen wier ich die restlichen Parameter mitgeben kann (Instanzname, gebildet vom Hostnamen und Datenverzeichnis auf dem Share):

$secpasswd = ConvertTo-SecureString "MaPasswort" -AsPlainText -Force  
$mycreds = New-Object System.Management.Automation.PSCredential (".\MyApp_Service", $secpasswd)  
$serviceName = "MyAppServer"  
$binaryPath = "C:\Program Files\MyAppServer\MyApp.exe"  
 New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic -credential $mycreds

Ich würde mir gerne das aufrufen der Batch aus PS heraus ersparen und alles in der PS ausführen lassen

Danke im Voraus
7907292512
Lösung 7907292512 27.10.2023 aktualisiert um 12:53:58 Uhr
Goto Top
Und ? Was ist daran jetzt so schwer? Hatten wir doch schon in deinem letzten Post das ganze Prozedere mit der Variablenexpandierung ...
$mycreds = New-Object System.Management.Automation.PSCredential (".\MyApp_Service", (ConvertTo-SecureString "MaPasswort" -AsPlainText -Force))    
$serviceName = "MyAppServer"    
$instanceName = $env:ComputerName
$dataPath = "\\mydomain.de\_DATA\VT\VT_A\Hersteller_Config\$instanceName"  
$binaryPath = "`"$psscriptroot\MeineApp.exe`" --instance `"$instanceName`" --DataPath=`"$dataPath`" obj=`"mydomain\My_Service_User`" password=`"MeinPassWort!`""    
New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic -credential $mycreds -Description "Der MyAppServer nimmt HTTP(S) Anfragen entgegen und verarbeitet diese nach dem Standard der VDV-KA"  

Ach ja , ist ja schon wieder Freitag 🐟
osdgap
osdgap 28.10.2023 um 09:06:39 Uhr
Goto Top
@7907292512, ich verspreche wenn ich das fertig habe schau ich mir den verlinkten HowTo für Anfänger an.
Zunächst mal vielen Dank...aber vorab, mit dem Viáriablenexpandieren, kannst du mir das auf die Schnelle erklärten, denn daran hab ich mich rumgezert, mit/ohne Hochkommer, doppel oder einfach Hochkomma, jetzt noch die Tilde dazu...

an der Stelle nochmals VIELEN DANK ....love u
7907292512
7907292512 28.10.2023 aktualisiert um 09:29:32 Uhr
Goto Top
Erstens das sind keine Tilde sondern Backticks!
Zweitens:
Doppeltes Anführungszeichen die innerhalb von Strings mit doppelten Anführungszeichen aufgeführt werden muss man Escapen, d.h. also entweder mir Backtick (`) prefixen oder sie alternativ *yverdoppeln
** ("").

Its all on the web ...
https://www.sans.org/blog/powershell-string-substitution/
https://devblogs.microsoft.com/powershell/variable-expansion-in-strings- ...