PowerShell - per Script ein Programm starten und wieder beenden
Hallo Gemeinde
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 591268
Url: https://administrator.de/contentid/591268
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
6 Kommentare
Neuester Kommentar
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
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
Moin.
So schwer ist das nicht
Den Programmpfad musst du natürlich anpassen.
Gruß Thomas
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
Gruß Thomas
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.
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!"
}