由我的应用程序(VB.NET)启动时,Get-AppxPackage命令不起作用

时间:2018-12-25 11:05:07

标签: vb.net powershell

我的应用程序的目的是在PowerShell中运行GetAppxPackage代码以安装用户首选项包(例如,反馈中心)。

Powershell命令如下:

get-appxpackage -allusers feedback | Foreach {Add-AppxPackage -DisableDevelopmentMode-注册“ $($ _。InstallLocation)\ AppXManifest.xml”}

(反馈的左边和右边都有星号,但是stackoverflow使它变为斜体)

当手动打开Powershell并运行它时,以上代码在Powershell中正常运行。

以下Iam用于在VB.NET中运行的代码

Dim w3 As String = "feedback"

Clipboard.SetText("get-appxpackage -allusers *" & w3 & "* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register " & Chr(34) & "$($_.InstallLocation)\AppXManifest.xml" & Chr(34) & "}")

Process.Start("powershell.exe", "Get-AppxPackage -allusers *" & w3 & "* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register " & Chr(34) & "$($_.InstallLocation)\AppXManifest.xml" & Chr(34) & "}")

剪贴板显然不是必需的,但是我用它来确认代码与应有的完全相同。

Powershell输出以下内容(从我的应用程序启动时):

Add-AppxPackage:找不到接受参数'\ AppXManifest.xml'的位置参数 在线:1字符:49 + ... | Foreach {添加AppxPackage -Disabledevelopmentmode-注册$($ _。In ... + + Categoryinfo:InvalidArgument:(:) [Add-AppxPackage]。参数绑定异常 + FullyQualifiedErrorId:PositionalParameterNotFound.Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand

我的应用程序运行时具有管理权限,Powershell也是如此。

由于代码完全相同,所以不知道问题是什么或可能是什么。非常感谢您为解决此问题提供的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

Process-Start和本机Start-Process都具有非常具体的报价要求,尤其是在需要多个参数时。

例如:

Process.Start("Powershell.exe", @"""ScriptwithArguments.ps1"" 'arg1' 'arg2 asdf'")

您还将看到使用逗号分隔的参数。

对于一个PowerShell单行命令和普通字符串引号,为什么还拥有所有ASCII代码,我也不是很确定。哪一个是本机PowerShell?

开始过程-FilePath Powershell -ArgumentList“ Get-AppxPackage -AllUsers | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register $($ _。InstallLocation)\ AppxManifest.xml -WhatIf}”

所以,你...

Process.Start("powershell.exe", "Get-AppxPackage -allusers *" & w3 & "* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register " & Chr(34) & "$($_.InstallLocation)\AppXManifest.xml" & Chr(34) & "}")

…应该就是这样,因为您只有一个参数,即整个命令字符串。

Process.Start('powershell.exe',"Get-AppxPackage -AllUsers | ForEach{ Add-AppxPackage -DisableDevelopmentMode -Register $($_.InstallLocation)\\AppxManifest.xml}")

另请参阅这些讨论以进行更多的启发...

How to run Powershell scripts in VB.Net

Running powershell scripts from within a .NET windows app

Calling a PowerShell Script From Your .NET Code

Executing PowerShell scripts from C#当然在VB.Net中也是如此。

Process.​Start Method