如何从带通配符的字符串中获取Appx全名? [英] How to get Appx full name from a string with wildcard?

查看:32
本文介绍了如何从带通配符的字符串中获取Appx全名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Powershell中,此命令Get-AppxPackage *name*可以显示软件包的全部详细信息。是否可以使用任何Windows API来获得等效结果?

我已经看到这个question和所有Package Query APIs的详细信息。但它们都需要完整的包名或正在运行的包进程句柄。这些不适用于通配符字符串。

例如,如果我安装了此软件包Microsoft.WindowsCalculator_8wekyb3d8bbwe,我可以使用Get-AppxPackage *Calculator*命令获取详细信息。是否可以使用任何Windows API?我希望避免system()CreateProcess()之类的事情。

xml

您可以浏览应用程序文件夹并从推荐答案清单文件中获取名称。需要管理员权限才能访问应用文件夹。

此示例列出名称中包含"xbox"的所有应用程序。该逻辑可以很容易地改编成C#或其他语言。

$appNameFilter = '*xbox*'

[System.Collections.Generic.List[string]]$appList = @()

$apps = Get-ChildItem 'C:Program FilesWindowsApps' -Recurse -Filter 'AppxManifest.xml'

foreach( $app in $apps ) {

    $xml     = [xml](Get-Content $app.FullName)
    $appName = $xml.Package.Properties.DisplayName

    if( $appName -like $appNameFilter -and !$appList.Contains( $appName )) {
        $appList.Add( $appName )
    }
}

$appList

这篇关于如何从带通配符的字符串中获取Appx全名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆