【问题标题】:How to debug "invoking" Powershell (ps1) from C# file如何从 C# 文件调试“调用”Powershell (ps1)
【发布时间】:2022-01-02 11:16:09
【问题描述】:

我正在尝试从 C# Visual Studio 解决方案调用 Powershell 文件。

显然,在调试时,当它遇到调用 PS1 文件的行时,它似乎什么都不做。

我收到这条消息:

我在 C# 中有这些行:

using System.Management.Automation;

PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"C:\Users\Justin\source\repos\HttpTrigger_1119\HttpTrigger_1119\list.ps1")).Invoke();

但是,当断点到达下一行时,它并没有显示错误:

我的下一个尝试是在 ps1 文件中放置断点。

但是,它似乎甚至没有在 ps1 文件的断点处停止。

既然没有命中 ps1 文件中的断点,那么调用 PS1 文件时可能会丢失一些东西,不是吗?

从现有的两行中添加什么?

PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"C:\Users\Justin\source\repos\HttpTrigger_1119\HttpTrigger_1119\list.ps1")).Invoke();

【问题讨论】:

  • @rfmodulator 谢谢。它帮助我诊断问题。看来我可能没有从 ps1 文件中得到任何结果。

标签: c# powershell


【解决方案1】:

关于“如何调试...”的问题

重构你的代码:

PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"C:\Users\Justin\source\repos\HttpTrigger_1119\HttpTrigger_1119\list.ps1")).Invoke();

你可以在调试器中观察到的东西:

var ps1Script = File.ReadAllText(...); 
var newPs = ps.AddScript(ps1Script); 
var psResult = newPs.Invoke();

并逐步检查您的代码,以确保它按照您的预期进行。

【讨论】:

  • 这正是我所做的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多