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-Key: 33707416318

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

Printed on: May 6, 2024 at 07:05 o'clock

Member: em-pie
Solution em-pie Oct 26, 2023 at 08:20:31 (UTC)
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?
Mitglied: 7907292512
Solution 7907292512 Oct 26, 2023 updated at 08:23:13 (UTC)
Goto Top
Zugriff verweigert
PowerShell-Konsole nicht elevated gestartet...

Sid.
Member: osdgap
osdgap Oct 26, 2023 at 08:37:02 (UTC)
Goto Top
Sh—t das wars ....DANKE euch
Member: osdgap
osdgap Oct 27, 2023 at 09:49:38 (UTC)
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
Mitglied: 7907292512
Solution 7907292512 Oct 27, 2023 updated at 10:53:58 (UTC)
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 🐟
Member: osdgap
osdgap Oct 28, 2023 at 07:06:39 (UTC)
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
Mitglied: 7907292512
7907292512 Oct 28, 2023 updated at 07:29:32 (UTC)
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- ...