Powershell provisioner: Does it support calling another powershell script?

ScriptA.ps1 calls ScriptB.ps1 and it is failing in powershell provisioner with this error:

Both ScriptA.ps1 and ScriptB.ps1 are just one liner code to write out some message.

image

I have the exact same issue. Anyone found a solution?

Yes, the Powershell provisioner in tools like Packer or Terraform does support calling another PowerShell script. You can use the Invoke-Expression cmdlet or simply call the script using its path from within the provisioner.

Here’s an example of how you can do this:

json

“provisioners”: [
{
“type”: “powershell”,
“script”: “C:/path/to/your/script.ps1”
}
]

Alternatively, if you’re within a script and want to call another PowerShell script, you can do so like this:

powershell

Call another PowerShell script

& “C:\path\to\anotherScript.ps1”

This approach works well for chaining multiple scripts or calling a common script from within a larger provisioning process. Just ensure that the script path is correct, and that any necessary execution policies are set to allow script execution.

How this works when you are trying to run it from a different user than vagrant? I have posted this message about how to run it as Administrator