How to give PowerShell WorkFlow access to previously imported modules

Question:

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?

Answer:

The article at http://www.powershellmagazine.com/2012/11/14/powershell-workflows/ 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.

Source:

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

Leave a Reply