How to give PowerShell WorkFlow access to previously imported modules


I’m trying to introduce PowerShell workflow into some existing scripts to take advantage of the parallel running capability.

Currently in the WorkFlow I’m having to use:

Otherwise I get the error stating it can’t find the custom function. There must be a better way to do this?


The article at confirms that having to import modules and then use them is just how it works – MS gets around this by creating WF activities for all its common PowerShell commands:

General workflow design strategy

It’s important to understand that the entire contents of the workflow
get translated into WF’s own language, which only understands
activities. With the exception of a few commands, Microsoft has
provided WF activities that correspond to most of the core PowerShell
cmdlets. That means most of PowerShell’s built-in commands—the ones
available before any modules have been imported—work fine.

That isn’t the case with add-in modules, though. Further, because each
workflow activity executes in a self-contained space, you can’t even
use Import-Module by itself in a workflow. You’d basically import a
module, but it would then go away by the time you tried to run any of
the module’s commands.

The solution is to think of a workflow as a high-level task
coordination mechanism. You’re likely to have a number of
InlineScript{} blocks within a workflow because the contents of those
blocks execute as a single unit, in a single PowerShell session.
Within an InlineScript{}, you can import a module and then run its
commands. Each InlineScript{} block that you include runs
independently, so think of each one as a standalone script file of
sorts: Each should perform whatever setup tasks are necessary for it
to run successfully.


How to give PowerShell WorkFlow access to previously imported modules by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply