如何从带通配符的字符串中获取Appx全名? [英] How to get Appx full name from a string with wildcard?
本文介绍了如何从带通配符的字符串中获取Appx全名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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屋!
查看全文