Home > Windows にまつわる e.t.c.

UWP アプリを PowerShell から起動する


Windows 10 の Edge や設定等の UWP(Universal Windows Platform) アプリは、通常の .exe と違って、実行ファイルを叩いただけでは起動できません。

コマンドラインからどうにか起動できないかと調べていたら、Start-Process コマンドレットで起動できることが分かりました。

Start-Process shell:AppsFolder\[PackageFamilyName]![ApplicationID]

 

例えば、Edge を起動するときはこんな感じです。

Start-Process shell:AppsFolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge

 

この、PackageFamilyName と ApplicationID は、Get-AppxPackage と Get-AppxPackageManifest で確認できます。

# PackageFamilyName
(Get-AppxPackage -Name *Edge*).PackageFamilyName

# ApplicationID
(Get-AppxPackage -Name *Edge* | Get-AppxPackageManifest).Package.Applications.Application.Id

 

関数にするとこんな感じ

################################################################
# UWP を起動するコマンド情報確認
################################################################
function GetUWPAppStartInfo( $AppName ){
    $UwpApp = Get-AppxPackage -Name *$AppName*
    [array]$PackageFamilyName = $UwpApp.PackageFamilyName
    [array]$ApplicationID = ($UwpApp | Get-AppxPackageManifest).Package.Applications.Application.Id

    # ドンピシャ当たりだったら、起動コマンド表示
    if( ($PackageFamilyName.Length -eq 1) -and ($ApplicationID.Length -eq 1)){
        $StartString = "Start-Process shell:AppsFolder\" + $PackageFamilyName + "!" + $ApplicationID
        echo "StartCommand"
        echo "-----------------"
        echo $StartString
    }
    # ヒットしなかった
    elseif( ($PackageFamilyName.Length -eq 0) -or ($ApplicationID.Length -eq 0)){
        echo "`"$AppName`" is not hit."
    }
    # 複数候補がある時は、要素表示
    else{
        echo "PackageFamilyName"
        echo "-----------------"
        echo $PackageFamilyName
        echo ""
        echo "ApplicationID"
        echo "-----------------"
        echo $ApplicationID
    }
}

 

Edge とかアプリケーション名が簡単に想像できるものは良いのですが、「設定」とか「アラーム&クロック」とか想像が難しい時はアプリケーション名一覧( Get-AppxPackage | ft Name )から見つけるか、Windows Sysinternals の Process Explorer でプロセスのコマンドラインからあたりを付けるのが良いでしょう。

 

なぜこんなことを調べていたかというと、RemoteApp で Windows 10 と Windows Server 2016 の「設定」を使いたかったのです。
が、残念ながら RemoteApp として直接起動が出来ていません。
PowerShellを RemoteApp 起動して、そこで Start-Process すれば UWP アプリ起動できるので、こいつで代用しています。

 

以下、この方法で起動が出来た起動コマンドです。(必要に応じて順次追加します)

# Edge
Start-Process shell:AppsFolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge

# 設定
Start-Process shell:AppsFolder\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel

# アラーム&クロック
Start-Process shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App

# マップ
Start-Process shell:AppsFolder\Microsoft.WindowsMaps_8wekyb3d8bbwe!App

# フォト
Start-Process shell:AppsFolder\Microsoft.Windows.Photos_8wekyb3d8bbwe!App

# Windows の既定のロック画面
Start-Process shell:AppsFolder\Microsoft.LockApp_cw5n1h2txyewy!WindowsDefaultLockScreen

# フィードバック Hub
Start-Process shell:AppsFolder\Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe!App

 

関連情報

関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/Windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm

山市良のうぃんどうず日記(99):Windows 10のショートカット「ms-settings:URI」は使い始めると止められない
http://www.atmarkit.co.jp/ait/articles/1707/11/news009.html

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.