FeaturedPower ShellSCCMScripts
Background job – examples
Use background job to run multiple script same time in background without waiting for session to complete
$computer = @('server1', 'server2', 'server3') Start-Job -ScriptBlock { Get-Content $input } -InputObject $computer Receive-Job -Name Job45 -Keep $job = Start-Job { $computer = @('server1', 'server2', 'server3') Get-hotfix -ComputerName $computer | Where { $_.HotFixID -eq "KB4504418" } } -PSVersion 5.1 Receive-Job $job $jobWRM = invoke-command -computerName $computer -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob start-job -ScriptBlock {Get-Process } -Name 'hh1' $session = New-PSSession -ComputerName server1, server2, server3 $job = Invoke-Command -Session $session ` -ScriptBlock {start-job -ScriptBlock {Get-hotfix | Where { $_.HotFixID -eq "KB4504418" }} } Get-Job $session = New-PSSession -ComputerName server1, server2, server3 Invoke-Command -Session $session ` -ScriptBlock {Get-hotfix | Where { $_.HotFixID -eq "KB4504418" }} -AsJob $session = New-PSSession -ComputerName server1, server2, server3 Invoke-Command -Session $session ` -ScriptBlock {start-job -ScriptBlock {Get-process }} - $RemoteComputer = @('server1', 'server2', 'server3') $Session = New-PSSession -ComputerName $RemoteComputer Invoke-Command -Session $Session -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name myJob} Get-Job $Result = Invoke-Command -Session $Session -ScriptBlock {Receive-Job -Name myJob -Keep} ######################################################################################################################## param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string[]]$Servers = "C:\servers.txt" ) $server = get-content $Servers foreach ($s in $server) { $scriptBlock = { if (Test-Connection -Quiet -Count 1) { $kb = 'KB5006669' $patch = Get-hotfix | Where { $_.HotFixID -eq $kb } if($patch ){ Write-output "$env:computername - $kb - installed - $($patch.installedon)" #$patch. | Sort-Object -Property HotFixID -ForegroundColor Green }else { Write-output "$env:computername - $kb - Notinstalled" } }else{ Write-Output "The $env:computername is not responding" } } invoke-command -ScriptBlock $scriptBlock -AsJob -JobName hotfix } ########################################################################################################################