もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
PowerShellのコマンドで、Get-AppxPackage アプリ名
というのをよく使う。
そのコマンドを打つと、PCにインストールされているstoreアプリの情報一覧が取れるのだが、その中の特定の項目の値だけを取りだしたい。
やりかた
Get-AppxPackage
とだけ打つと、
Name : Microsoft.NET.CoreFramework.Debug.2.2 Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : X64 ResourceId : Version : 2.2.30316.1 PackageFullName : Microsoft.NET.CoreFramework.Debug.2.2_2.2.30316.1_x64__8wekyb3d8bbwe InstallLocation : C:\Program Files\WindowsApps\Microsoft.NET.CoreFramework.Debug.2.2_2.2.30316.1_x64__8wekyb3d8bbwe IsFramework : True PackageFamilyName : Microsoft.NET.CoreFramework.Debug.2.2_8wekyb3d8bbwe PublisherId : 8wekyb3d8bbwe IsResourcePackage : False IsBundle : False IsDevelopmentMode : False NonRemovable : False IsPartiallyStaged : False SignatureKind : Developer Status : Ok Name : MicrosoftWindows.UndockedDevKit Publisher : CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : Neutral ResourceId : neutral Version : 10.0.22621.1 PackageFullName : MicrosoftWindows.UndockedDevKit_10.0.22621.1_neutral_neutral_cw5n1h2txyewy InstallLocation : C:\Windows\SystemApps\MicrosoftWindows.UndockedDevKit_cw5n1h2txyewy IsFramework : False PackageFamilyName : MicrosoftWindows.UndockedDevKit_cw5n1h2txyewy PublisherId : cw5n1h2txyewy IsResourcePackage : False IsBundle : False IsDevelopmentMode : False NonRemovable : True IsPartiallyStaged : False SignatureKind : System Status : Ok Name : app.a6df94284-2eb9-48cf-a89f-2ebbf24c2aeb Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : X86 ResourceId : Version : 1.0.0.0 PackageFullName : app.a6df94284-2eb9-48cf-a89f-2ebbf24c2aeb_1.0.0.0_x86__8wekyb3d8bbwe InstallLocation : C:\Users\masa\AppData\Local\Microsoft\VisualStudio\17.0_13721e48\Designer\Cache\1849204464x86DC IsFramework : False PackageFamilyName : app.a6df94284-2eb9-48cf-a89f-2ebbf24c2aeb_8wekyb3d8bbwe PublisherId : 8wekyb3d8bbwe IsResourcePackage : False IsBundle : False IsDevelopmentMode : True NonRemovable : False Dependencies : {Microsoft.VCLibs.140.00.Debug_14.0.30704.0_x86__8wekyb3d8bbwe, Microsoft.NET.CoreRuntime.2.2_2.2.3 1331.1_x86__8wekyb3d8bbwe, Microsoft.NET.CoreFramework.Debug.2.2_2.2.31327.1_x86__8wekyb3d8bbwe} IsPartiallyStaged : False SignatureKind : None Status : Ok Name : Microsoft.UI.Xaml.2.7 Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : X64 ResourceId : ・ ・ ・ ・
という感じで、情報一覧が取れる。
で、
Get-AppxPackage | Select Name
と打つと、
Microsoft.UI.Xaml.2.4 Microsoft.VCLibs.140.00 Microsoft.NET.Native.Framework.2.2 app.a4426c2b6-c3ec-47f8-9fa6-bbfae745e7f5 ・ ・ ・
と、アプリ名だけ取れる。
で、「Select Name」したやつをさらに、1つのアプリだけに絞るために
Get-AppxPackage Microsoft.ZuneMusic | Select Name, Version
とアプリ名を指定すると、
Name Version ---- ------- Microsoft.ZuneMusic 11.2401.2.0
という感じで、項目名と、Name, Versionの値が取れる。
項目名を省いて、値だけ取り出す
人間が情報を得るだけならこれでよかったのだが、
C#からPowerShellで情報を取ってきて、欲しい値だけ取り出したいときに、
Name Version ---- ------- Microsoft.ZuneMusic 11.2401.2.0
なんていう形だと、取り出すのがめんどくさい。
なので、下記のようにする。
(Get-AppxPackage Microsoft.ZuneMusic).Version
こうすると、
11.2401.2.0
こんな感じで、値だけが取れる。