To run multiple scripts in multiple servers can be pain… I have created a way to dynamically run scripts on each server and yet only trigger on file per server. If you want to trigger another script just add the script in the “$global:TriggerFolder”-folder and it will be run next time this script is run.
This might be very handy if you executing powershellscripts as a surveillance method.
#Loading Framework, the only static path in the script. . ("c:ScriptsloadFramework.ps1") Get-Job | Remove-Job #retrieve all ps1-files trigger them in parallell ForEach ($file in (Get-ChildItem ($TriggerFolder + "*.ps1") ) ) { start-job -Name $file.Name -filepath ($TriggerFolder+$file.Name) | Out-Null } while ((Get-Job | Where-Object {$_.state -match 'running'}).count -gt 0) { sleep 1 } # Get all jobs execution time. Is very handy to see if a script execution differs from before. $hashScripts = @{} foreach ($job in Get-Job) { $hashScripts.Add($job.name, ($job.psEndTime - $job.psBeginTime ) ) } # Clear all jobs Get-Job | Remove-Job
The framework-file that is loaded looks like this (very reduced).
# Folders $global:ScriptFolder = "c:Script" $global:CoreFolder = $ScriptFolder + "Core" $global:FunctionFolder = $ScriptFolder + "Function" $global:TriggerFolder = $ScriptFolder + "Triggers" $global:TempPath = $ScriptFolder + "temp" $global:DownloadSource = "https://url/to/function/repository/"