PowerShell ISE:调试从 power-shell 脚本调用的另一个 power-shell 脚本
Posted
技术标签:
【中文标题】PowerShell ISE:调试从 power-shell 脚本调用的另一个 power-shell 脚本【英文标题】:PowerShell ISE: Debug another power-shell script called from a power-shell script 【发布时间】:2017-01-01 13:22:14 【问题描述】:我想调试一个 power-shell 脚本,该脚本是使用 PowerShell ISE
从我的主 power-shell 脚本调用的。下面是我的 Main 脚本的示例代码。
$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
在这里,我正在尝试使用 ISE
进入 Release.ps1 脚本。
我曾尝试通过按F11
键来执行此操作,但不是调试器转到此脚本,而是执行脚本(与 Step Over 相同,而不是 Step into)。
有谁知道我该怎么做??
【问题讨论】:
effin 递归... ;( 开个玩笑,“Start-Process powershell”背后的逻辑是什么? 我正在另一个实例上执行 Release.ps1 脚本,这就是我使用 Start-Process powershell 的原因。这是客户希望我这样做的事情。 调试如何?如果您按照 Nico 的建议知道导致它失败的条件,则可以手动运行它。如果您想在实时环境中对其进行测试,您需要设置适当的错误捕获,将错误记录到文件中或在弹出窗口或其他内容中显示它们。如果您知道错误但需要查看变量,那就是另一回事了。我们需要知道你想做什么。 【参考方案1】:通过使用Start-Process
,您可以运行一个新的 powershell 实例。所以这就是为什么你不能调试你的脚本。
您可以使用以下方法调用脚本中的其他脚本:
.\Release.ps1 -username $Login
有了这个,你就可以调试你的脚本了
【讨论】:
有没有办法只用这种方式调试它(在另一个实例中执行脚本)? 我不这么认为,您可以尝试使用参数:NoNewWindow
,但认为它不起作用。否则,如果您必须在没有 ./ 的情况下调试脚本,您可以使用:New-PsBreakpoint
... 为第二个脚本手动添加断点。一些有用的链接:PowerShell Debugger 或 Quick and Efficient PowerShell Script Debugging。我从不使用这种调试方式
谢谢 Nico ,这真的帮助我按照我的要求调试它。以上是关于PowerShell ISE:调试从 power-shell 脚本调用的另一个 power-shell 脚本的主要内容,如果未能解决你的问题,请参考以下文章
PowerShell ISE/文件名解析缺陷远程执行代码漏洞#RCE
如何将所需的参数传递给 Powershell ISE 中的脚本?
从 Powershell ISE 中的另一个 PS1 脚本调用 PowerShell 脚本 PS1
PowerShell 和 TFS |使用本地路径与使用服务器路径的 PowerShell ISE 从 TFS 获取更改集列表