【问题标题】:Problem1 running Powershell command in VB.NETProblem1 在 VB.NET 中运行 Powershell 命令
【发布时间】:2015-09-21 17:33:34
【问题描述】:

我想从我的 vb.net 程序运行 PowerShell 命令。我运行命令的方式是:

Shell("powershell.exe Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register ""$($_.InstallLocation)\AppXManifest.xml""}", AppWinStyle.NormalFocus, True)

实际的命令是:

Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

当我复制上面的命令并将其粘贴到 PowerShell 中时,它可以工作。但是,当我使用代码(Shell)运行相同的命令时,会发生一些错误。 PowerShell 填充红色文本。在我阅读任何内容之前,窗口就关闭了。我已经检查了几次代码和命令。但仍然不知道为什么同一命令的结果不同。

【问题讨论】:

  • 尝试将-NoExit switch 添加到 powershell.exe - 然后您将能够看到错误消息。

标签: vb.net powershell windows-10


【解决方案1】:

该命令的确切解释方式可能会导致问题。您可以尝试通过在命令行中添加-command 开关并引用您的命令来更明确地修复它。

Shell("powershell.exe -command ""Get-AppXPackage | ...""", ...)

作为一个例子。尝试从 cmd.exe 运行以下命令:

C:\>powershell dir c:\ | select Name
'select' is not recognized as an internal or external command, operable program or batch file.

但如果你使用-command,那么问题就消失了。

C:\>powershell -command "dir c:\ | select Name"

Name
----
Debug
etc.

这显然不是完全相同的行为,但类似的东西可能会导致问题。

【讨论】:

  • 您好,感谢您的回答。我试过了,但不幸的是它仍然无法正常工作。错误是“找不到接受参数'\AppxManifest.xml'的位置参数
  • 听起来好像在从 VB 过渡时出现了问题。尝试通过对命令执行Write-Host ""$($_.InstallLocation)\AppXManifest.xml"" 之类的操作来简化命令。这有望让您看到实际为该值传递了什么,因此您可以确定是否有额外的引号或缺少引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 2018-04-21
  • 2011-03-02
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
相关资源
最近更新 更多