🎁
複数IDを検索キーにwinget showの結果を抽出し表示するPowerShellのFunction
概要
こちらでソースが winget
もしくは msstore
のアプリ(ソフトウェア)に再インストールする作業を実施しまいた。
こちらのGitHubのIssueでもあがっていますが、
不具合により winget search
では表示されないMicrosoft Store製のアプリが存在しました。
そんな winget search
では検索できないMicrosoft Store版のアプリは、 winget show
で取得可能な為、
コマンド結果から必要な情報だけ抽出できるFunctionを作成しました。
この記事のターゲット
- Windows ユーザーの方
- PowerShell ユーザーの方
-
複数IDを検索キーに
winget show
の結果を確認したい方
自作したFunction
今回、作成したFunctionでは、winget search
の結果をもとに 「アプリ名・ID・ソース」 の3つを抽出し表示するという内容です。
場合によってはアプリ名で検索する事も考えられます。使用用途に応じてコードを変更してください。
自作したFunction「Write-WingetShow」
# Function
Function Write-WingetShow {
Param (
[System.String[]]$targetIds
)
# 抽出対象の文字列を指定
[System.String]$HitMessage = '見つかりました '
[System.String]$InstallerType = ' インストーラーの種類: '
# 文字コードをUTF-8に変更
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
# コマンド結果から抽出しアプリ名・ID・ソースのみを表示
foreach ($id in $targetIds) {
[System.String[]]$appInfo = (winget show --id $id)
# 検索結果あり
if ($appInfo -match $HitMessage) {
$appNameAndId = $appInfo | Select-String "$HitMessage.*" | ForEach-Object {
$_.Matches[0].Value -replace "$HitMessage", ''
}
$appSource = $appInfo | Select-String "$InstallerType.*" | ForEach-Object {
$_.Matches[0].Value -replace "$InstallerType", ''
}
Write-Host "$appNameAndId [$appSource]"
}
# 検索結果なし
else {
Write-Warning "見つかりませんでした。ID: [$id]"
# 中断する場合はコメントアウト解除
#return
}
}
}
# 検索対象のIDを配列で指定
$searchIds = @(
#対象のID
)
# Function の実行
Write-WingetShow $searchIds
実際に実行した結果
私の環境で実行した際の結果を表示。
実際に実行した結果
PS C:\Users\"ユーザー名"> # 検索対象のIDを配列で指定
>> $searchIds = @(
>> 'Microsoft.Edge',
>> '1234567890AB',
>> 'XPFFZHVGQWWLHB',
>> 'Microsoft.VCLibs.Desktop.14'
>> )
>> # Function の実行
>> Write-WingetShow $searchIds
Microsoft Edge [Microsoft.Edge] [msi]
警告: 見つかりませんでした。ID: [1234567890AB]
OneNote [XPFFZHVGQWWLHB] [exe]
Microsoft Visual C++ 2015 UWP Desktop Runtime Package [Microsoft.VCLibs.Desktop.14] [msix]
PS C:\Users\"ユーザー名">
まとめ
- このFunctionを使用することで
winget search
で表示されないMicrosoft Store版アプリの情報を複数、取得できるようになった! - 表示言語が日本語ではない場合、
$HitMessage = '見つかりました '
や$InstallerType = ' インストーラーの種類: '
を見直す必要あり
関連記事
Discussion