问题标签 [pshost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#中的Powershell Sqlcmd弹出窗口
我有一个 PSHost 对象执行 Powershell 脚本 myscript.ps1 并且 .ps1 脚本正在执行 sqlcmd.exe 以完成它需要完成的工作。有没有办法让它不弹出空的 sqlcmd dos 提示(就像它看起来那样)?
c# - 如何从 c# powershell 脚本执行中提取 $lastexitcode
我在这里使用代码项目上的 powershell 异步执行代码在 C# 中执行了一个 scipt:
我需要返回 $lastexitcode,Jean-Paul 描述了如何使用自定义 pshost 类返回它。我在 pshost 中找不到返回退出代码的任何方法或属性。
这个引擎我需要确保脚本正确执行。
任何帮助,将不胜感激。
问候鲍勃。
它的 $lastexitcode 和 $? 我需要带回来的变量。
你好,终于回答了。
我发现了 $host 变量。它实现了对主机的回调,特别是自定义 PSHost 对象,使您能够返回 $lastexitcode。这是 $host 解释的链接。
http://mshforfun.blogspot.com/2006/08/do-you-know-there-is-host-variable.html
与 powershell 文档一样,它似乎晦涩难懂,文档记录不充分。使用第 4 点,调用 $host.SetShouldExit(1) 将 1 返回到 pshost 的 SetShouldExit 方法,如此处所述。
它实际上取决于定义您自己的退出代码定义。我猜是 0 和 1 后缀。
问候鲍勃。
powershell - 如何在 powershell 中使用运行空间建立和进入远程会话
我正在尝试在 C# 代码中从我的机器 A 与远程主机 B 建立会话。我正在为此使用运行空间 API。下面提供了代码片段
此代码预计将进入与机器 TS-TEST-09 的会话并调用该机器上现有的脚本 helper.ps1(该部分在当前代码中被注释掉,因为我无法进入与远程主机的会话)。
现在的问题是我无法使用 -Session 参数进入会话 $s(在 scripttext3 突出显示)但是我可以使用 -Computername 参数进入它。
在 scripttext3 中使用 -Session 参数时出现的错误是:
在调用System.Management.Automation.Internal.Host.InteralHost.GetIHostSupportsInteractiveSession()
在调用System.Management.Automation。Internal.Host.InteralHost.PushRunspace(运行空间运行空间)
在 Microsoft.Powershel.Commands.EnterPSSessionCommand.ProcessRecord()
在 System.Management.Automation.Cmdlet.DoProcessRecord()
在 System.Management.Automation.CommandProcessor.ProcessRecord()
内部异常堆栈跟踪结束
这是否意味着我必须编写一个自定义 PSHost 并使用此参数添加对 Enter-PSSession cmdlet 的支持?
有没有其他方法可以使这个命令起作用?
任何帮助都感激不尽。
谢谢,
马尼什
c# - 从 C# 以编程方式调用 CmdLet 时如何捕获 Powershell CmdLet 的对象输出
背景
- 带有 SDK 的 PowerShell 3
- 带有框架 4.5 的 C#
执行
我已经使用 PSHostUserInterface 实现了我自己的PSHost登录。在PSHostUserInterface 中,我覆盖了所有Write...方法并收集到一个为输出提供服务的变量。
问题
在我的应用程序中,我调用使用WriteObject作为其输出的 Cmdlet。在PSHostUserInterface.Write...方法中,除了这些WriteObject的输出之外,我得到了所有内容。例如,我在常规 PowerShell 中看到了这一点:
这是命令的示例字符串输出
这里我们有来自 Cmdlet.WriteObject 函数的对象
这是命令的另一个字符串输出
这是我在应用程序的自定义 PSHost 中得到的:
这是命令的示例字符串输出
这是命令的另一个字符串输出
问题
如何在 C# 中获取 Cmdlet 的所有输出?
非常感谢
c# - C# 中的自定义 PSHost、Get-Credential cmdlet
我正在尝试实现一个自定义 PSHost 类,以便为 Power Shell 脚本制作 GUI。我已将此处的代码作为基础并开始将其改编为 GUI 项目 https://msdn.microsoft.com/en-us/library/ee706557%28v=vs.85%29.aspx
一切都很好,直到我尝试运行 Get-Credential cmdlet 并收到该方法未实现的错误(ooouuuu)...初始代码是这两种方法:
所以经过一些研究,我实现了这样的对话:
这工作正常,但有一个障碍,当运行 Get-Credential cmdlet 时,它会提示输入 Credential 参数的值,无论点击返回后的任何输入,都会弹出对话框并且一切都按预期工作。在 ISE 中执行相同操作,直接弹出对话框,没有任何提示。我认为这是由于方法的参数,但通过定义默认值使它们成为可选并没有什么不同。这可能是由于 cmdlet 在 PS 环境中是如何定义的,所以我的问题是:我怎样才能使它运行 cmdlet 将直接跳转到对话框?是否可以为要绑定的 Credential 参数定义默认值?我猜这就是 ISE 解决这个问题的方式,还是我错过了什么?
c# - PSHost PromptForChoice 格式 ChoiceDescription
在我的PSCmdlet
课堂上,我要求用户使用PromptForChoice
. 提示用户选择他想要使用的连接字符串。我无法给出ChoiceDescriptions
正确的格式。
给我这个
连接字符串
选择您要使用的连接字符串
[0] 0数据源=.\SQLEXPRESS;集成安全=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户实例=true
[1] 1有效的连接字符串;
[2] 2Data Source=111.111.1.1;初始目录=Test;User id=User;Password=Password;MultipleActiveResultSets=true
[?] 帮助(默认为“0”):
如您所见,这些数字也在连接字符串文本中,这不是我想要的。
这就是我想要实现的目标:
[0] 数据源=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户实例=true
等等等等
因此,我需要将用户选择为int
. 我怎样才能得到我想要达到的结果?
代码:
c# - 使用复杂命令渲染 Powershell 输出
我正在尝试通过 C# 应用程序执行 PS1 文件并根据严重性捕获/分割输出。错误、调试、信息等。这是一个 Windows 窗体应用程序。这是运行方法,我在单击按钮时调用它:
在我的 AddInfo 方法中,我正在检查对 UI 层的线程访问
我的PS1文件内容如下:
我看到的是“Test-Before”,就是这样。在 Get-WebBinding 命令之后,所有输出流似乎都没有收到任何内容。我尝试添加 Out-Default、Out-String 甚至指向 Out-File。似乎没有任何效果。
此处未显示的是其他流的其他 DataAdded 方法,包括错误、调试、详细、进度和警告。很想停止在这个上踢自己。:)
c# - 管理自动化主机矩形:bottom不能大于等于top
我收到一个错误,说底部不能大于或等于顶部。
我正在使用Rectangle
此处记录的构造函数:https ://docs.microsoft.com/en-us/dotnet/api/system.management.automation.host.rectangle.-ctor?view=powershellsdk-1.1.0#System_Management_Automation_Host_Rectangle__ctor_System_Int32_System_Int32_System_Int32_System_Int32 _
这是我的相关代码部分;
我在构造函数之前看到了调试行,但从来没有看到“矩形集”消息。
这是输出;
我可以看到顶部大于底部,但我不断收到错误;"bottom" cannot be greater than or equal to "top"
这是一个错误,还是文档错误,还是我遗漏了什么。