Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Create a language type called ps workflow
    1. Set the file extension to ps1
    2. Set the command to PowerShell -ExecutionPolicy Bypass -File "$SCRIPT_NAME$"
    3. Set the category field to Workflow.
    4. Click OK.

  2. Add a new Metadata Object Type.
    1. To add a new object, right click on the Host Script node.
    2. Select New Object.
    3. For this example, enter Print Context as a name.
    4. Click OK.

  3. In the configuration window, set the type to ps workflow script, set the appropriate Owner and Connection Name for your data.

  4. The new script should appear on the Host Script node.
  5. Right click on Print Context and select Edit the Script. This will open the script on a new tab.
  6. On the edit script tab enter the following code:
    Code Block
    languagepowershell
    write-output 1
    write-output 'Printing context'
    
    # print the expected context file
    write-output "---- First 20 lines ofParsing context file: `n$PSScriptRoot\wsla${ENV:WSL_SEQUENCE}.objects`n----objects"
    if (Test-Path -path "$PSScriptRoot\wsla${ENV:WSL_SEQUENCE}.objects") { 
      get-content -path 
      # Parse json .objects file
      $json = Get-Content "$PSScriptRoot\wsla${ENV:WSL_SEQUENCE}.objects" | Out-String | ConvertFrom-Json
    
      # Context
      write-output "`n---- Context: $($json.context)"
    
      # Group
      if ($json.group -ne $null) {
        write-output "---- Group: $($json.group)"
      }
    
      # Projects
      if ($json.project -ne $null) {
        write-output "---- Project(s):"
        $json.project
      }
    
      # Objects
      if ($json.objectsByName -ne $null) {
        # print objects
        $htRedObjects = [ordered]@{}
        # Populates a hastable -TotalCount 20 | write-output
    }
    else {
     with obj-name as Key and obj-type as Value from RED formatted json 
        $json.objectsByName | get-member -type properties | %{ $htRedObjects[$_.name] = $json.objectsByName."$($_.name)".objectType.name }
        $htRedObjects.Keys | select @{label='Object Name';expression={$_}}, @{label='Object Type';expression={$htRedObjects.$_}}
      }
    
      # Jobs
      if ($json.jobsByName -ne $null) {
        # print jobs
        write-output "`n---- Jobs:"
        $redJobs=@()
        $redJobs = $json.jobsByName
        $redJobs
      }
    
      # Parameters
      if ($json.parametersByName -ne $null) {
        # print parameters
        write-output "`n---- Parameters:"
        $redParams=@()
        $redParams = $json.parametersByName
        $redParams
      }
    
    }
    else {
      write-output "*** Error: Objects file doesn't exist as there were no objects in the current context. ***"
    }

...