Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing variable arguments using PowerShell's Start-Process cmdlet

Good evening everyone,

I'm using a command line that passes arguments to as variables in the following scripts to be run in another ps1 that I'm calling from within this script. Whenever I try to pass the arguments from the command line I get the following error though

Start-Process : A positional parameter cannot be found that accepts argument

Would anyone be able to assist?
Thank you for your time and much appreciate any help.

param
(
    [string]$targetserver = $args[0], #target server
    [string]$module = $args[1], #module name
)

function Get-Script-Directory
{    
  return Split-Path $script:MyInvocation.MyCommand.Path
}

Start-Process powershell.exe (Join-Path (Get-Script-Directory) "...\StopServices.ps1") -ArgumentList $targetserver $module
like image 200
Mike Avatar asked Feb 25 '26 18:02

Mike


1 Answers

Try this for the last line

$scriptPath = Join-Path (Get-Script-Directory) "...\StopServices.ps1"
Start-Process powershell.exe -ArgumentList "-file $scriptPath", $targetserver, $module  

Update due to comment: To show you that it is working see the GIF below - so you may check it again or insert some debug output to see where things go wrong with your script

GIF showing working solution

like image 66
DAXaholic Avatar answered Feb 27 '26 07:02

DAXaholic