Is it possible to automate UDE® by Windows PowerShell?

Yes, because Windows PowerShell can deal with COM objects it can also control UDE®.

Here is a small example which starts UDE®, programs the FLASH with an application, executes the program for 1 seconds and read some variables.

Example:

  # UDE automation basics - PowerShell demo script
  # On command line run: "powershell .\UDEAutomationDemo.ps1"
  # In PowerShell console run: ".\UDEAutomationDemo.ps1"
  # Note: Don't use expression '$true' together with UDE functions, use 1 instead

  # Helper function to release COM objects
  function Release-Ref ($ref)
  {
    ([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref) -gt 0)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
  }

  $Progid="UDELauncher"

  $WspFile = "D:\UdeAutomationDemo\UdeAutomationDemo.wsx"
  $CfgFile = "D:\UdeAutomationDemo\TriBoard_TC27xB_dap.cfg"
  $ElfFile = "D:\UdeAutomationDemo\MulticoreDemo.elf"

  write-output "Create new UDELauncher object ..."
  $UDELauncher = New-Object -ComObject $ProgId

  write-output "Start new UDE instance"
  $UDEApplication = $UDELauncher.StartAndCreateWorkspace("UDEVisualPlatform.exe", $WspFile, $CfgFile, 1)
  $Output = " UDE version: " + $UDEApplication.VersionInfo
  write-output $Output

  write-output "Access workspace"
  $UDEWorkspace = $UDEApplication.Workspace
  $Output = " Workspace: " + $UDEWorkspace.ProjectTitle
  write-output $Output

  write-output "Access first core debugger"
  $UDEDebugger = $UDEWorkspace.CoreDebugger(0)

  write-output "Wait for target connected"
  while (0 -eq $UDEDebugger.Connected)
  {
    $UDEWorkspace.Sleep(100)
  }

  write-output "Load target application"
  $UDEDebugger.LoadAndFlash($ElfFile)

  write-output "Start target application"
  $UDEDebugger.Go()

  write-output "Wait a second"
  $UDEWorkspace.Sleep(1000)

  write-output "Read some variables"
  $Seconds = $UDEDebugger.ReadVariable("g_SharedData.Seconds")
  $Output = " Time: " + $Seconds
  write-output $Output

  write-output "Release objects and close UDE instance"
  $UDELauncher.StopInstance($UDEApplication)

  write-output "Release UDE launcher (optional)"
  Release-Ref($UDELauncher)

  write-output "Finished"

Please see the UDE Manual, the UDE® Help and UDEAutomation.chm for more details about automation with UDE®.