Powershell Skript mehrfach gleichzeitig ausführen

Hallo zusammen,
ich bin neu hier im Forum und habe direkt eine Frage.

Ich musste alte Batch-Files in Powershell umschreiben. Leider habe ich nicht wirklich Ahnung von Powershell.

Das wichtigste habe ich mittlerweile soweit hinbekommen.

Jetzt habe ich aber 2 Probleme, bei denen ich nicht weiter komme und hoffe, dass mir hier jemand helfen kann.
Ich habe hier im Forum geschaut und auch Google schon befragt, finde aber keine wirkliche Lösung.

Hier das Szenario:

Ich nutze ein Programm (wahrscheinlich eigene Entwicklung innerhalb des Konzerns für den ich arbeite. Das Programm heißt Dispatcher).
In diesem Programm kann ich diverse Voreinstellungen für den Start der Skripte einstellen (Welche VM genutzt werden soll, Pfad zum Programm welches installiert werden soll usw.)
Der Aufruf von Powershell ist in einer Ini-Datei definiert:

[INSTALL_"Software"]
;Explanation: This batch will create the initializer and the VM starter batches and start the tests for each VM
TestBegin
TestErrorLogging=1
TestExe=powershell.exe
TestParameter=-File "%DispatchBatchDir%\Complete_Install.ps1" "%DropLocation%" "%BuildDefinition%" "%BuildNumber%" "%VMnumber%" "%VmUserName%" "%VmUserPasswd%" "%DispatchBatchDir%" "%S7TesttoolVersion%" "%S7TesttoolReleaseVersion%" "%ExecuteTestFolder%" "%hostS7TesttoolPath%" "%S7TesttoolName%" "%S7TesttoolInstallPath%" "%ToolsPath%" "%LocalToolsPath%" "%TempSetupPath%" "%LocalTIAPath%" "%PropertyPath%" "%PropertyLocation%"

Innerhalb dieses Powershell Skripts werden andere Powershell Skripte und auch Psexec ausgeführt:

#Function of Batch: Copy the Latest TIA Portal setup to VM, Install TIA and Testtools
  1. get Paramaeters
param(
[String]$DropLocation,
[String]$BuildDefinition,
[String]$BuildNumber,
[String]$VMnumber,
[String]$VmUserName,
[String]$VmUserPasswd,
[String]$DispatchBatchDir,
[String]$S7TesttoolVersion,
[String]$S7TesttoolReleaseVersion,
[String]$ExecuteTestFolder,
[string]$hostS7TesttoolPath,
[String]$S7TesttoolName,
[String]$S7TesttoolInstallPath,
[string]$ToolsPath,
[string]$LocalToolsPath,
[string]$TempSetupPath,
[string]$LocalTIAPath,
[string]$PropertyPath,
[string]$PropertyLocation
)


Write-Host $DropLocation
Write-Host $BuildDefinition
Write-Host $BuildNumber
Write-Host $VMnumber
Write-Host $VmUserName
Write-Host $VmUserPasswd
Write-Host $DispatchBatchDir
Write-Host $S7TesttoolVersion
Write-Host $S7TesttoolReleaseVersion
Write-Host $ExecuteTestFolder
Write-Host $hostS7TesttoolPath
Write-Host $S7TesttoolName
Write-Host $S7TesttoolInstallPath
Write-Host $ToolsPath
Write-Host $LocalToolsPath
Write-Host $TempSetupPath
Write-Host $LocalTIAPath
Write-Host $PropertyPath
Write-Host $PropertyLocation





  1. Name the Window
$host.ui.RawUI.WindowTitle = "Initialize VM Test"

  1. Set Mode of Powershell
Set-StrictMode -Version Latest

  1. Define new variables

$env:systemdrive
$NameOfBatch = Split-Path -leaf $MyInvocation.MyCommand.Definition
$LogDir = $DispatchBatchDir
$QueueFileOfStartedVM="QueueVM_$VMnumber.conf"

$MSPSConfigFiles = "$env:SystemDrive\Users\$VmUserName\Documents\MSPSConfigfiles"
$WBMConfigfiles = "$env:SystemDrive\Users\$VmUserName\Documents\WBMConfigfiles"
$TIAProjects = "$env:SystemDrive\Users\$VmUserName\Documents\Automatisierung"
$MSPSLogfiles = "$env:SystemDrive\Users\$VmUserName\Documents\MSPSLogfiles"
$WBMLogfiles = "$env:SystemDrive\Users\$VmUserName\Documents\WBMLogfiles"

$filter="*.zip"
$S7TesttoolZip = Get-ChildItem -Recurse -Path $hostS7TesttoolPath\$S7TesttoolVersion\$S7TesttoolReleaseVersion\x64 -Filter $filter
#$S7TesttoolZip.FullName
$S7TesttoolZip

Write-Host $S7TesttoolZip

  1. Define Logfile
$Logfile = "$LogDir\log_$NameOfBatch"+"_$VMnumber.txt"

Function LogWrite
{
Param ([string]$logstring)

Add-content $Logfile -value $logstring
}

  1. Check if parameter not empty
if(!$DropLocation) {LogWrite "Parameter DropLocation not set."}
if(!$BuildDefinition) {LogWrite "Parameter BuildDefinition not set."}
if(!$BuildNumber) {LogWrite "Parameter BuildNumber not set."}
if(!$VMnumber) {LogWrite "Parameter VMnumber not set."}
if(!$VmUserName) {LogWrite "Parameter VmUserName not set."}
if(!$VmUserPasswd) {LogWrite "Parameter VmUserPasword not set."}
if(!$DispatchBatchDir) {LogWrite "Parameter MainBatchDir not set."}
if(!$S7TesttoolVersion) {LogWrite "Parameter S7TesttoolVersion not set."}
if(!$S7TesttoolReleaseVersion) {LogWrite "Parameter S7TesttoolReleaseVersion not set."}

#Generate a new entry in Log
LogWrite "----start $NameOfBatch.bat for VM number $VMnumber----"

  1. Check if selected VM is in use
  2. Explanation: Check if queue file for selected VM exists
LogWrite "Check if selected VM is free."
if (Test-Path $ExecuteTestFolder\$QueueFileOfStartedVM)
{LogWrite "Error: Queue file $ExecuteTestFolder\$QueueFileOfStartedVM was found. Selected VM automation number $VMnumber is in use.\n
Note: If the Selected VM automation number $VMnumber is free, but the queue file does still exists $ExecuteTestFolder\$QueueFileOfStartedVM, please delete the file."
Write-Host "Error: Queue file $ExecuteTestFolder\$QueueFileOfStartedVM was found. Selected VM automation number $VMnumber is in use."
Exit} else {# Queue File will be created, if the copy of TIA setup are in progress
New-Item -ItemType file "$ExecuteTestFolder\$QueueFileOfStartedVM"}

  1. Revert snapshot of selected VM
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\RevertSnap.ps1`"", "$VMnumber"

  1. Start selected VM
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\VMStart.ps1`"", "$VMnumber"

#Start-Sleep -s 180
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\Timer.ps1`""

  1. Check if selected VM is running
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\CheckIfVMrun.ps1`"", "$VMnumber"

  1. Copy files to VM
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\CopyMSPSTools.ps1`"", "$VMnumber", "$VmUserName", "$VmUserPasswd", "$LocalToolsPath", "$ToolsPath"

  1. Install TIA
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\Call_InstallTIA.ps1`"", "$VMnumber", "$VmUserName", "$VmUserPasswd", "$TempSetupPath", "$DropLocation", "$BuildDefinition", "$BuildNumber", "$DispatchBatchDir", "$LocalTIAPath"

  1. Restart VM
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\RestartVM.ps1`"", "$VMnumber"

#Start-Sleep -s 180
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\Timer.ps1`""

  1. Check if selected VM is running
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\CheckIfVMrun.ps1`"", "$VMnumber"

  1. Install S7Testtool
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\InstallTesttool.ps1`"", "$VMnumber", "$VmUserName", "$VmUserPasswd", "$LocalTIAPath", "$S7TesttoolVersion", "$S7TesttoolReleaseVersion", "$hostS7TesttoolPath", "$S7TesttoolName", "$S7TesttoolInstallPath", "$PropertyPath", "$PropertyLocation", "$S7TesttoolZip", "$MSPSConfigFiles", "$WBMConfigfiles", "$TIAProjects", "$MSPSLogfiles", "$WBMLogfiles"

  1. Stop VM
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\StopVM.ps1`"", "$VMnumber"

  1. Take Snapshot
Start-Process -Wait "powershell.exe" -ArgumentList "-File `"$DispatchBatchDir\TakeSnapshot.ps1`"", "$VMnumber", "$BuildDefinition", "$BuildNumber"

Remove-Item "$ExecuteTestFolder\$QueueFileOfStartedVM"

Jetzt zu meinen 2 Problemen:

1. Wenn das Powershell Skript aufegrufen wird, öffnet sich kein Powershell Fenster. Das erste Fenster, dass ich zu sehen bekomme ist, wenn der erste "Start-Process" gestartet wird. Es soll sich aber direkt ein Fenster öffnen.

2. Dieses Skript soll parallel ausführbar sein, da ich es mehrfach starten muss. Die Software, die mit diesem Skript installiert werden soll, muss auf bis zu 24 VMs installiert werden. Das soll aber über das erste Programm aufgerufen werden.

Vielen Dank im voraus für Eure Hilfe.

Content-Key: 667559

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

Ausgedruckt am: 28.07.2021 um 05:07 Uhr

Mitglied: H41mSh1C0R
H41mSh1C0R 14.06.2021 aktualisiert um 09:45:48 Uhr
Goto Top
Guten Morgen,
um es leserlicher zu machen benutze bitte Code Tags.

Zu deinen Fragen:

Zu 2:

https://devblogs.microsoft.com/scripting/parallel-processing-with-jobs-i ...

Ändern sich nur die Maschinenziele oder soll die Siemens SPS/Automation Software auch unterschiedlich parametrisiert auf den unterschiedlichen Maschinen installiert werden?

So oder so kannst du dir eine Config zusammenbauen die dann als Parameter auf die unterschiedlichen Jobs verteilt werden.


VG
Mitglied: haeuptling1977
haeuptling1977 14.06.2021 um 11:13:30 Uhr
Goto Top
Hallo @H41mSh1C0R,

nur die Maschinenziele ändern sich. Alles andere bleibt gleich.

Sorry, dass ich mich vielleicht ein bisschen blöd anstelle, aber wo trage ich das mit dem Start-Job ein? In der Ini-Datei, die den Aufruf der ps1 startet oder muss ich eine extra Datei anlegen?

VG
Heiß diskutierte Beiträge
question
Zentrale Lösung für Antivirus, Patchmanagement, Monitoring in einem?Andre82msVor 1 TagFrageSicherheits-Tools24 Kommentare

Hallo Zusammen, ich suche schon seit längerem eine gute Lösung, welche ein gut funktionierendes Patchmanagement, Anti-Virenscanner mit EDR sowie ein Monitoring in einem Dashboard beinhaltet ...

question
Signatur-Programm gesuchtArchanVor 1 TagFrageOutlook & Mail20 Kommentare

Hi zusammen, vorab als Info: Wir haben eine Mischung aus Office365 und 2016, sowie einen Exchange 2016 Server. Ich bin nun auf der Suche nach ...

question
Mitarbeiter ab gewisser Uhrzeit am arbeiten hindern gelöst passy951Vor 21 StundenFrageWindows Netzwerk19 Kommentare

Guten Morgen zusammen, ich wurde gestern von unseren Betriebsrat gefragt ob es möglich ist ab z.B. 20 Uhr die Mitarbeiter daran zu hindern zu arbeiten. ...

question
Wie lange kann ein PC in der Domain ohne Kontakt zur Domain betrieben werden?DaxAtDS9Vor 21 StundenFrageNetzwerkmanagement16 Kommentare

Hallo, bis vor einer Woche habe ich einen SBS2011 Server inkl. AD etc. in Betrieb gehabt. Nun habe ich ihn abgeschaltet und nutze einer der ...

question
Mikrotik vs. Unify - Warum mögt Ihr Unify nicht? gelöst tagol.deVor 1 TagFragePeripheriegeräte10 Kommentare

Hallo immer wieder lese ich, das hier auf Administrator.de Mikrotik bevorzugt wird. Aktuell habe ich zuhause 2 AP von Unify + Controller auf einem Rasberry ...

question
Domänencontroller von Windows Server 2016 auf Windows Server 2019 migrierenEstefaniaVor 14 StundenFrageWindows Server24 Kommentare

Hi. Kann mir ein Admin bei folgendem Problem weiterhelfen !? Wir haben insgesamt 5 Domänencontroller, die auf einem Windows Server 2016 laufen. Nun ist es ...

question
Home-Office Laptop kann DNS nicht auflösenLubosNovyVor 1 TagFrageWindows Netzwerk15 Kommentare

Hallo zusammen, Situation: Manche Kolleginnen arbeiten im Home-Office und sind über Sophos SSL Client verbunden. Die Notebooks sind von mir vorbereitet, in die Domänen aufgenommen ...

report
Positive Erfahrung mit VodafoneitebobVor 1 TagErfahrungsberichtFlatrates3 Kommentare

Hallo zusammen, vieles, was ich im Beitrag Erfahrungsbericht Vodafone - Die endlose Vertragsänderung und in Kommentaren lese, deckt sich mit meinen persönlichen Erfahrungen mit Vodafone. ...