首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Get显示了删除-AppxPackage的‘-AllUser``参数,那么为什么cmdlet不接受它呢?

Get显示了删除-AppxPackage的‘-AllUser``参数,那么为什么cmdlet不接受它呢?
EN

Stack Overflow用户
提问于 2022-08-03 19:07:46
回答 2查看 311关注 0票数 1

我需要一种方法来可靠地从以给定字符串开始的系统中删除所有Appx包。在大多数系统中,以下工作:

代码语言:javascript
运行
复制
Get-AppxPackage -all MyApp* | Remove-AppxPackage -AllUsers

然而,对于两个系统,我得到以下信息:

代码语言:javascript
运行
复制
PS C:\Users\Administrator> Get-AppxPackage -all CDI* | Remove-AppxPackage -AllUsers
Remove-AppxPackage : A parameter cannot be found that matches parameter name 'AllUsers'.
At line:1 char:48
+ Get-AppxPackage -all CDI* | Remove-AppxPackage -AllUsers
+                                                ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Remove-AppxPackage], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand

这基本上说AllUSers无效,但这与Get-Help输出相矛盾:

代码语言:javascript
运行
复制
 Get-Help Remove-AppxPackage -Parameter AllUsers

-AllUsers [<SwitchParameter>]
    {{Fill AllUsers Description}}
    
    Required?                    false
    Position?                    named
    Default value                False
    Accept pipeline input?       False
    Accept wildcard characters?  false

是否存在路径问题或为每个人删除Appx包的其他方法?

更新#1:版本信息

下面是命令的版本信息:

代码语言:javascript
运行
复制
PS C:\Users\Administrator> Get-Command Remove-AppxPackage

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Remove-AppxPackage                                 1.0        Appx

和操作系统

代码语言:javascript
运行
复制
> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0

更新#2

模块版本输出

代码语言:javascript
运行
复制
PS > Get-Module -ListAvailable Appx


    Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   2.0.0.0    Appx                                {Add-AppxPackage, Get-AppxPackage, Get-AppxPackageManifest...

当我没有AllUsers开关时,有没有办法产生与它相同的效果(尽管文档中说我应该)

EN

回答 2

Stack Overflow用户

发布于 2022-08-04 14:21:11

移除-附录包 只有在最近的版本(桌面和服务器版本)中才有开关。

  • 在链接的页面上,浏览版本特定的文档页(通过左侧主题列表上方的版本下拉列表)显示,Windows Server 2016 PowerShellWindows 10 and Windows Sever 2019 PowerShell是文档-AllUsers的最早版本。

正如您稍后所述,您使用的是Windows 2016,版本号表示最近发布的版本,因此-AllUsers应该可以工作。例如,在我最近发布的Windows 10版本(发布ID 21H2,构建19044;Windows 10具有与Windows 2016相同的基础)上,-AllUsers存在。一个显著的区别是,与您的计算机上的AppX模块版本相比,我的计算机上的2.0.1.0模块版本是2.0.1.0,这可能解释了两者之间的差异:

您的错误消息确实意味着cmdlet本身缺乏-AllUsers参数--尽管Get-Help cmdlet可能会报告什么(信息不一定是同步的)。

  • 如果您想知道给定命令是否真正支持给定参数,请使用 Get-Command -Syntax,它直接引用命令的定义;在本例中: (Get-Command -Syntax Remove-AppxPackage) -match '-AllUsers'
  • 一个更简单的选择是尝试在选项卡上完成参数名:如果什么都没有发生,参数就不存在。

潜在解决方案

  • 使用Get-Module -ListAvailable AppX查看是否意外地安装了AppX模块的多个版本(一个过时的版本隐藏了平台--适当的版本),如果是的话,删除除最新版本(最高版本号)之外的所有版本。
  • 否则,您可以尝试从最近的Windows 10 / Windows 2019或Windows 2022机器手动复制模块--但您必须看看这是否有效。
代码语言:javascript
运行
复制
- Unfortunately, the `Appx` module is _not_ available in the [PowerShell Gallery](https://www.powershellgallery.com/packages?q=appx), so you cannot simply install the latest version with [`Install-Module`](https://learn.microsoft.com/en-us/powershell/module/PowershellGet/Install-Module).
代码语言:javascript
运行
复制
- The need for doing this would imply that the [_docs_ for Windows Server 2016](https://learn.microsoft.com/en-us/powershell/module/appx/remove-appxpackage?view=windowsserver2016-ps) are incorrect.
票数 1
EN

Stack Overflow用户

发布于 2022-08-04 22:20:06

与许多其他用户一样,cmdlet还要求您在想要影响其他用户的情况下,将PowerShell提升为具有管理权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73226586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档