PowerShell ISE: отладка другого сценария Power-Shell, вызванного из сценария Power-Shell.

Я хочу отладить сценарий Power-Shell, который вызывается из моего основного сценария Power-Shell, используя PowerShell ISE. Ниже приведен пример кода моего основного скрипта.

$myLog = "$scriptPath\BuildRelease\logs\LaLogs.log"

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Set-Location -Path $scriptPath
Set-Location -Path BuildRelease
$paramList = "-ArgumentList -username $Login"

if($Mode -eq "False"){
    Start-Process powershell -ArgumentList '-noexit','-File', 'Release.ps1', $paramList
}

Здесь я пытаюсь войти в скрипт Release.ps1, используя ISE.

Я попытался сделать это, нажав клавишу F11, но вместо того, чтобы отладчик перешел к этому сценарию, сценарий выполняется (так же, как Step Over, вместо Step into).

Кто-нибудь знает, как я могу это сделать??


person Geeky Ninja    schedule 25.08.2016    source источник
comment
эффективная рекурсия... ;(   -  person Jaqueline Vanek    schedule 25.08.2016
comment
кроме шуток, какая логика стоит за powershell Start-Process?   -  person Jaqueline Vanek    schedule 25.08.2016
comment
Я выполняю сценарий Release.ps1 на другом экземпляре, поэтому я использую powershell Start-Process. И это то, что клиент хочет, чтобы я сделал это таким образом.   -  person Geeky Ninja    schedule 25.08.2016
comment
Как отлаживать? Вы можете запустить его вручную, если знаете условия, которые приводят к сбою, как предложил Нико. Если вы хотите протестировать его в реальной среде как есть, вам нужно настроить надлежащий захват ошибок, который записывает ошибки в файл или отображает их во всплывающем окне или что-то в этом роде. Если вы знаете ошибку, но вам нужно увидеть переменные, это другая история. Нам нужно знать, что вы пытаетесь сделать.   -  person Deadly-Bagel    schedule 25.08.2016


Ответы (1)


с помощью Start-Process вы запускаете новый экземпляр powershell. Вот почему вы не можете отлаживать свой скрипт. Вы можете вызвать другой скрипт в своем скрипте, используя:

.\Release.ps1 -username $Login

И с этим вы можете отлаживать свой скрипт

person Nico    schedule 25.08.2016
comment
Есть ли способ отладить его только таким образом (выполнение скрипта в другом экземпляре)? - person Geeky Ninja; 25.08.2016
comment
Я так не думаю, вы можете попробовать использовать параметр: NoNewWindow, но не думаю, что это сработает. В противном случае, если вам необходимо отладить сценарий без ./, вы можете вручную добавить точку разрыва во второй сценарий, используя: New-PsBreakpoint .... Несколько полезных ссылок: Отладчик PowerShell или Быстрая и эффективная отладка сценариев PowerShell. Я никогда не использую этот вид отладки - person Nico; 25.08.2016
comment
Спасибо, Нико, это действительно помогло мне отладить его в соответствии с моим требованием. - person Geeky Ninja; 26.08.2016