问题
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
回答1:
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
来源:https://stackoverflow.com/questions/38900961/passing-variable-arguments-using-powershells-start-process-cmdlet