Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass a parameter from Batch file to a function inside a Powershell script

I have a Batch file which will call a Powershell Script :

BATCH FILE : @ECHO OFF powershell ..\PowerShellScript.ps1

The powershell script in turn has a function which expects a parameter :

POWERSHELL SCRIPT:

function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}

Lets say i have a value : VALUE1 which needs to be passed from the batch File while calling the PowerShellScript.ps1, how do I pass it to the function PSFunction so that my output is VALUE1?

like image 344
Murtaza Mandvi Avatar asked Dec 10 '22 20:12

Murtaza Mandvi


2 Answers

modify your script to look like the following

function PSFunction([string]$Parameter1)
{
  Write-Host $Parameter1
}

PSFunction $args[0]

and from the batch file, it would look like

powershell ..\PowerShellScript.ps1 VALUE1
like image 170
Scott Weinstein Avatar answered Jan 13 '23 13:01

Scott Weinstein


Use the -Command switch to tell powershell.exe to interpret a string as if it were typed at a PowerShell prompt. In your case, the string could dot-source PowerShellScript.ps1 (to import it into the new powershell.exe environment) and then call PSFunction with VALUE1 as a parameter:

set VALUE1=Hello World
powershell.exe -command ". ..\PowerShellScript.ps1; PSFunction '%VALUE1%'"
like image 27
totorocat Avatar answered Jan 13 '23 14:01

totorocat