コマンドで取れた値の、値の部分だけ取る

もくじ
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

こんな感じで、値だけが取れる。