Synopsis Run powershell commandlets as an asynchronous task Syntax Invoke-SasAsync [-SasInput] <Object[]> [-ScriptBlock] <ScriptBlock> [<CommonParameters>] Description This function allows you to execute a script block with a SAS object in a background task. Parameters -SasInput <Object[]> The SAS object(s) you want to use inside your custom script block. May be of type SAS.Workspace or SASOMI.IOMI Required? true Position? 1 Default value Accept pipeline input? false Accept wildcard characters? false -ScriptBlock <ScriptBlock> A custom script block with Cmdlets4Sas and other powershell instructions. NOTE: You can reference your SasObject with the $SasInput variable. Required? true Position? 2 Default value Accept pipeline input? false Accept wildcard characters? false Notes The SAS object you provide as parameter can be used inside your scriptblock as the variable $SasInput. If you want to use some results from the background task you must save them in a variable named $SasOutput Examples -------------------------- EXAMPLE 1 -------------------------- C:\PS>$sb = [scriptblock] {$clone = Copy-SasWorkspace $SasInput; Invoke-SasCode $clone "data _null_; run;"; Disconnect-SasServer $clone;} $job = Invoke-SasAsync $workspace $sb -------------------------- EXAMPLE 2 -------------------------- C:\PS>$ws = Connect-SasWorkspaceLocal $ScriptBlock = [scriptblock]{ $clone = Copy-SasWorkspace $SasInput; Invoke-SasCode $clone "data _null_; call sleep(10,1); run;"; # write data to console Read-SasData $clone "sashelp.class"; # save results in hashtable $SasOutput = @{}; $SasOutput["log"] = Read-SasLog $clone; $SasOutput["data"] = Read-SasData $clone "sashelp.class"; Disconnect-SasServer $clone; } $job = Invoke-SasAsync $ws $ScriptBlock $job | Get-SasAsyncResult # writes to console # use results from background job $job.SasOutput["log"] $job.SasOutput["data"] Disconnect-SasServer $ws