问题1在VB.NET中运行Powershell命令

问题1在VB.NET中运行Powershell命令,vb.net,powershell,windows-10,Vb.net,Powershell,Windows 10,我想从我的vb.net程序运行PowerShell命令。我运行命令的方式是: Shell("powershell.exe Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register ""$($_.InstallLocation)\AppXManifest.xml""}", AppWinStyle.NormalFocus, True) Get-AppXPackage | Foreach {Add-App

我想从我的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"}
实际命令是:

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将填充红色文本。我还没来得及看东西,窗户就关上了。我已经多次检查了代码和命令。但仍然不知道为什么同一个命令的结果不同。

该命令的解释方式可能会导致问题。您可以尝试通过在命令行中更加明确地添加
-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.

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

该命令的解释方式可能会导致问题。您可以尝试通过在命令行中更加明确地添加
-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.

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

尝试添加
-NoExit
切换到powershell.exe-然后您将能够看到错误消息。尝试添加
-NoExit
切换到powershell.exe-然后您将能够看到错误消息。您好,谢谢您的回答。我试过了,但不幸的是它还是不起作用。错误是“找不到接受参数'\AppxManifest.xml'的位置参数。听起来在从VB的转换过程中有点混乱。请尝试通过执行类似于
Write Host”“$($.InstallLocation)\AppxManifest.xml的操作来简化您的命令”“
用于该命令。这将有助于您了解该值的实际传递情况,以便确定是否有额外报价或缺少报价。您好,谢谢您的回答。我试过了,但不幸的是它还是不起作用。错误是“找不到接受参数'\AppxManifest.xml'的位置参数。听起来在从VB的转换过程中有点混乱。请尝试通过执行类似于
Write Host”“$($.InstallLocation)\AppxManifest.xml的操作来简化您的命令”“
用于该命令。这将有望让您看到该值的实际传递内容,以便确定是否有额外的报价或缺少报价。