Tuesday, February 6, 2018

Powershell Start-Job example

Example Start-Job usage

Example of using Start-Job in your script.

Job file (\\path\job-example2.ps1)

This is the script that will be called multiple times. Wanted to illustrate calling a file with parameters. It's a trival example, but wanted to show different output in the job results.
param(
    $runTask = $false,
    $action
)
if($runTask){
    $message = $action
    switch($action){
        "0"{
            $message = $message + ":zero"
        }
        "1"{
            $message = $message + ":one"
        }
        "2"{
            $message = $message + ":two"
        }
        "3"{
            $message = $message + ":three"
        }
        "4"{
            $message = $message + ":four"
        }
        "5"{
            $message = $message + ":five"
        }
        default{
            $message = $message + ":don't know"
        }
    }
}else{
    write-output "did not run"
}
Write-Output $message

Tasker file (\\path\job-example1.ps1)

This will create multiple jobs. Each job will be assigned a numeric iteration of the loop value as the name. We'll wait for all the jobs to finish and then get the output of each job using the name we assigned.
$scriptfile = $MyInvocation.MyCommand.Path
$scriptPath = split-path -parent $scriptfile

for($i=0;$i -le 5;$i++){
    $arguments = @($true,"$i")
    start-job -filepath "$scriptPath\job-example2.ps1" -ArgumentList $arguments -name $i
    sleep -Seconds 1
}

do{
    $state = get-job | ?{$_.state -eq 'Running'}
    sleep -second 1
}while($state -ne $null)

for($i=0;$i -le 5;$i++){
    receive-job -name $i
}


Expected output:


Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
1      0               BackgroundJob   Running       True            localhost            param(...                
3      1               BackgroundJob   Running       True            localhost            param(...                
5      2               BackgroundJob   Running       True            localhost            param(...                
7      3               BackgroundJob   Running       True            localhost            param(...                
9      4               BackgroundJob   Running       True            localhost            param(...                
11     5               BackgroundJob   Running       True            localhost            param(...                
0:zero
1:one
2:two
3:three
4:four
5:five





No comments:

Post a Comment

AWS WAF log4j query

How to query AWS WAF log for log4j attacks 1. Setup your Athena table using this instruction https://docs.aws.amazon.com/athena/latest/ug/wa...