powershell - 获取安装在系统上的 UWP 应用的“普通”(最终用户可读)名称
问题描述
我正在使用以下 PowerShell 脚本来检索系统上的 UWP 应用列表并将其保存到文本文件中。它获取 ID、名称(系统名称)和 packagefamilyname。
除了名称之外,我还在寻找一种方法来检索应用程序的纯名称:例如,“OneNote”而不是“Microsoft.Office.OneNote”。理想情况下,此名称也应进行本地化:例如,“Calculatrice”(在法语系统上)而不是“Microsoft.WindowsCalculator”。
我发现这个由 Get-AppxPackage 检索到的信息列表,但没有像最终用户可读的名称......我对这个专业领域不是很熟悉。任何帮助,将不胜感激。
$installedapps = get-AppxPackage
$ids = $null
foreach ($app in $installedapps)
{
try
{
$ids = (Get-AppxPackageManifest $app -erroraction Stop).package.applications.application.id
}
catch
{
Write-Output "No Id's found for $($app.name)"
}
foreach ($id in $ids)
{
$line = $app.Name + "`t" + $app.packagefamilyname + "!" + $id
echo $line
$line >> 'c:\temp\output.txt'
}
}
write-host "Press any key to continue..."
[void][System.Console]::ReadKey($true)
解决方案
[完成更新]
你可以在 C# 中很容易地做到这一点。您必须从 Windows SDK 中引用正确的 WinMD(实际目录将根据 SDK 版本而变化):
C:\Program Files (x86)\Windows Kits\10\References\10.0.17134.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd
C:\Program Files (x86)\Windows Kits\10\References\10.0.17134.0\Windows.Foundation.UniversalApiContract\6.0.0.0\Windows.Foundation.UniversalApiContract.winmd
如果您无法构建独立的 EXE 并且只想要纯 PowerShell,则可以参考 WinMDs %systemroot%\system32\winmetadata
。代码非常简单(我避免了await
,因为我不知道 PowerShell 是否有):
// using Windows.Management.Deployment;
static void Main(string[] args)
{
GetList();
}
static void GetList()
{
var pm = new PackageManager();
var packages = pm.FindPackagesForUser("");
foreach (var package in packages)
{
var asyncResult = package.GetAppListEntriesAsync();
while (asyncResult.Status != Windows.Foundation.AsyncStatus.Completed)
{
Thread.Sleep(10);
}
foreach (var app in asyncResult.GetResults())
{
Console.WriteLine(app.DisplayInfo.DisplayName);
}
}
}
推荐阅读
- javascript - 使用 JS 定期检查文本的有效方法
- python - 我的代码循环通过 urls 但不是 urls Python 中的页面
- android - 如何使用 CameraX 在应用程序内显示相机
- python - 未找到 BingAds API 类型问题
- python - 是否可以创建一个 django 查询来查找两个模型中最新的唯一日期?
- c - 在 C 中将浮点数 16 转换为 4 位整数的最有效方法
- flutter - 需要管理列高并将变量作为小部件属性传递
- arrays - Swift Core Data - 数组未正确加载
- sql - Oracle中同一表中2列的唯一索引/约束
- angular - firebase 值更改后执行任务