2016-08-11 4 views
2

Добрый вечер,Передача переменных аргументов с помощью Start-Process командлета PowerShell в

Я использую командную строку, которая передает аргументы как переменные в следующих сценариях, которые будут работать в другом ps1, что я звоню изнутри этот скрипт. Всякий раз, когда я пытаюсь передать аргументы из командной строки, я получаю следующее сообщение об ошибке, хотя

Start-Process: Позиционный параметр не может быть найден, который принимает аргумент

ли кто-нибудь сможет помочь?
Благодарим за ваше время и высоко ценим любую помощь.

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

Попробуйте это на последней строке

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

Update из-за комментарий: Для того, чтобы показать вам, что это работает увидеть ниже GIF - так что вы можете проверить его снова или вставить некоторые выходные данные отладки, чтобы увидеть где что-то не так с вашим сценарием

GIF showing working solution

+0

Thanks Dax! Я обновил эту строку и, похоже, все еще бросает один и тот же «Пуск-процесс: не найден позиционный параметр, который принимает аргумент». – Mike

+0

См. Мое обновление - была моя ошибка, не читал всю строку:/Путь к сценарий является аргументом в powershell.exe, а также – DAXaholic

+0

Спасибо Dax, что отлично работало! Реально оцените помощь. – Mike

Смежные вопросы