ztommy
Goto Top

PowerShell - per Script ein Programm starten und wieder beenden

Hallo Gemeinde face-smile

ich bitte um Hilfe...

ich muss auf einem Server ein Programm(EXE-Datei) per Script öffnen und wieder schließen.
Dies muss mit einer bestimmten User-ID passieren, da diese im Programm bzw. in der Software registriert ist.
Die User-ID ist dort registriert und öffnet ein bestimmtes Verfahren und erstellt einen Report.
Passwort ist eigentlich nicht von Nöten.

Also kurz und knapp:
1. Programm mit entsprechender User-ID per Script starten
2. Programm nach ca. 5 Minuten wieder schließen

Dies erfolgt auf einem Server, wo ich das Script dann per Task Scheduler starten lasse.

Im Netz oder hier finde ich leider nichts konkretes dazu und mit PowerShell habe ich leider kaum Erfahrung.

Würde mich über Hilfe freuen und danke schon einmal mit nem dicken Daumen vorab.

Grüße

Content-ID: 591268

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

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

SlainteMhath
SlainteMhath 28.07.2020 aktualisiert um 15:16:22 Uhr
Goto Top
Moin,

per PoweShell eigentlich kein Problem:
starten geht mit Start-Process (bsp hier: https://ss64.com/ps/start-process.html)
stoppen geht mit stop-process (bsp hier: https://ss64.com/ps/stop-process.html)

/EDIT: und warten kannst du hiermit: https://ss64.com/ps/start-sleep.html

lg,
Slainte
ZTommy
ZTommy 28.07.2020 um 15:50:20 Uhr
Goto Top
Danke für die Links.

Da ich da noch nie mit großartig zu tun hatte, sieht das wie Bömische Dörfer aus.
Das habe ich auch im Netz gesehen.

Hmmm. Muss ich schauen...
TK1987
TK1987 28.07.2020 aktualisiert um 16:14:16 Uhr
Goto Top
Moin.

Zitat von @ZTommy:
Da ich da noch nie mit großartig zu tun hatte, sieht das wie Bömische Dörfer aus.
So schwer ist das nicht
# Pfad des zu startenden Programms
$Program = 'C:\WINDOWS\system32\notepad.exe'  

# Programm starten
$Process = Start-Process $Program -PassThru

# 300 Sekunden lang warten
Start-Sleep -Seconds 300

# Programm wieder schließen
Stop-Process -Id $Process.Id
Den Programmpfad musst du natürlich anpassen.

Gruß Thomas
liquidbase
Lösung liquidbase 28.07.2020 aktualisiert um 16:16:37 Uhr
Goto Top
So ähnlich könnte man das bauen. Ist jetzt aber nur schnell zusammengefrickelt. Im Endeffekt macht der Code nichts anderes das er von einem genannten Benutzer das Login zieht (Zeile 2), kontrolliert ob bereits eine Output-Datei existiert (Zeile 5-8), den Prozess entsprechend startet (Zeile 13) und eventuellen Output des Prozesses in eine Datei schreibt. Letzteres kann man auch weglassen wenn es keinen Output im Powershell-Fenster gibt.
Zeile 16 startet dann den Sleeptimer, bevor dann in Zeile 17 das beenden des Prozesses ausgelöst wird. Der Wert 300 entspricht hier 5 Minuten in Sekunden. Der letzte Teil des Codes sorgt dann dafür das man den Inhalt sieht. Kann aber auch entfernt werden wenn es kein Output gibt.

Musst mal schauen ob man das für dich so passt. Script ist zusammengebaut anhand der Informationen aus deinem ersten Post. Das ganze in eine Textfile und die mit der Dateiendung .ps1 versehen.

# Benutzer-Login
$Credential = Get-Credential [computername]\[user]

#Outputfile für Ausgaben des Prozesses
$ResultFile = "$($env:temp)\process-output.txt"  
If (Test-Path $ResultFile)  {
  Remove-Item $ResultFile
}

# Prozess-Argumente
$ProcessArguments = "Get-Process Explorer"  
# Prozess-Start und %WINDIR% als Arbeitsverzeichnis
(Start-Process -FilePath "Pfad\zum\Prozess" -Credential $Credential -ArgumentList $ProcessArguments -WorkingDirectory $env:windir -NoNewWindow -PassThru -RedirectStandardOutput $ResultFile).WaitForExit()  

# Sleep-Timer zum Programm beenden
Start-Sleep -s 300
Stop-Process -FilePath "Pfad\zum\Prozess"  

# Datei einlesen und ausgeben, im Anschluss löschen
If (Test-Path $ResultFile)  {
  $Result = Get-Content $ResultFile
  Remove-Item $ResultFile
  $Result
}Else  {
  write-error "File $($ResultFile) does not exist!"  
}
ZTommy
ZTommy 29.07.2020 um 12:26:06 Uhr
Goto Top
Hallöchen face-smile

ich danke Dir für deine Rückmeldung.

Wenn man noch nie oder kaum Berührung damit hatte, fällt bekandlich am Anfang alles etwas schwer.

Wenn man es, wie Du zeigt, kann man daran etwas testen und versuchen zu verstehen.
Vom Aufbau usw.

Ich teste dies heute im laufe des Nachmittags.
ich hoffe, es hilft mir weiter.

Vielen lieben dank face-smile

Grüße
ZTommy
ZTommy 29.07.2020 um 12:29:50 Uhr
Goto Top
Hallöchen face-smile

Auch Dir einen lieben Dank für deine Mühe face-smile
Sehr sehr lieb.

Ich danke Dir dafür und werde das auch im Laufe des Nachmittags einmal testen bzw. anpassen.

Ich hoffe, es hilft mir weiter, mein Problem zu lösen.

Leider habe ich da bisher kaum Erfahrungen sammeln können und bin daher auf Hilfe angewiesen.

Sehr lieb, das mir hier geholfen wird.

Ich Danke Dir vielmals.

Ergebnis werde ich hier natürlich bekannt geben.

Grüße face-big-smile