【问题标题】:Running applications within PowerShell window在 PowerShell 窗口中运行应用程序
【发布时间】:2014-07-01 03:38:21
【问题描述】:

我正试图摆脱命令提示符,因为它是一个死胡同,转而使用 PowerShell (ISE)。我还没有弄清楚如何在 PowerShell (ISE) 窗口中运行命令行应用程序。每次我使用 Start-Process 时,都会出现一个命令提示符窗口(然后消失)。我看到有人建议 -Wait 和 -NoNewWindow 但到目前为止这些对我没有用。

Start-Process MyApplication.exe

这会启动命令提示符,运行应用程序并消失。 PowerShell 保持响应。

Start-Process MyApplication.exe -Wait

这会启动命令提示符,运行应用程序并消失。在命令提示符退出之前,PowerShell 不会响应。

Start-Process MyApplication.exe -Wait -NoNewWindow

这会导致以下结果:

Start-Process : 此命令无法运行,因为错误:系统找不到指定的文件。

【问题讨论】:

  • 尝试使用 .exe 的完整路径。或者,如果它位于当前路径,请使用 .\MyApplication.exe
  • 我将 .\ 添加到文件名的开头并且它有效,但是为什么呢?
  • 我添加了响应作为答案。如果您认为可以回答此评论和您的问题,请标记它。
  • 可以,但是 PowerShell ISE 呢?
  • @HelloWorld,您可能还想查看 ConEmu。 PowerShell 在其中运行良好。

标签: powershell command-line window command-prompt


【解决方案1】:

. 在 PowerShell 中表示当前目录。这是为了确保用户不会在$env:Path 环境变量指定的文件夹中运行恶意可执行文件。

来自about_Command_Precedence的帮助内容:

作为一项安全功能,Windows PowerShell 不运行可执行(本机)命令,包括 Windows PowerShell 脚本,除非该命令位于 Path 环境变量 ($env:path) 中列出的路径中,或者除非您指定脚本文件的路径。

要运行当前目录中的脚本,请指定完整路径,或键入一个点 (.) 来表示当前目录。

例如,要运行当前目录中的FindDocs.ps1 文件,请键入:

   .\FindDocs.ps1

【讨论】:

  • 这在 PowerShell 中有效,但 PowerShell ISE 启动命令提示符,然后运行应用程序。
  • ISE 本身不是控制台主机。它是一个模拟控制台体验的 WPF 应用程序。因此,本机命令在那里的行为不同。但是,.\ 的概念在控制台和 ISE 之间没有变化。
  • 是的,.\ 有效,但应用程序无法在 ISE 中运行。问题是我正在使用依赖 Unicode 的应用程序,而 Win32 控制台(命令提示符/Windows PowerShell)无法处理它,但我被告知 ISE 确实支持 Unicode,因此我需要在里面运行应用程序伊势。
  • 是的,没错。 ISE 支持 unicode,但就像我说的它不是控制台主机,而只是 WPF 应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2012-08-29
  • 2013-11-05
  • 1970-01-01
  • 2012-04-08
  • 2011-04-03
相关资源
最近更新 更多