M365関連 プログラム 技術

PowerShellでPower系(PowerApps、PowerAutomate)を操作する

今回はPowershellからPowerApps・PowerAutomateのコマンドについて調べたのでそのメモとなります

Version
OSWindows 11 Pro
PowerShell7.4.1
Microsoft.PowerApps.Administration.PowerShell(モジュール)2.0.180
Microsoft.PowerApps.PowerShell(モジュール)1.0.34

Power系コマンドのインストール

以下のコマンドを実行してそれぞれのモジュールをインストールします

Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
Install-Module -Name Microsoft.PowerApps.PowerShell

アプリの一覧取得

PowerAppsの場合は【Get-AdminPowerApp】、PowerAutomateの場合は【Get-AdminFlow】を実行します。ただ、PowerAutomateの場合は取得した情報に所有者情報は含まれていないようです

Get-AdminPowerApp | ForEach-Object {
    $appName = $_.DisplayName
    $appId = $_.AppName
    $owner = $_.Owner.displayName
    $createdTime = ConvertTimeZone($_.CreatedTime)
    $appLastModified = ConvertTimeZone($_.LastModifiedTime)
    LogWrite "Debug" "AppName: $appName, AppId: $appId, Owner: $owner, CreatedTime: $createdTime, LastModified: $appLastModified"
}

Get-AdminFlow | ForEach-Object {
    $flowName = $_.DisplayName
    $flowId = $_.FlowName
    $createdTime = ConvertTimeZone($_.CreatedTime)
    $flowLastModified = ConvertTimeZone($_.LastModifiedTime)
    LogWrite "Debug" "FlowName: $flowName, FlowId: $flowId, CreatedTime: $createdTime, LastModified: $flowLastModified"
}

時刻の変換

上記で取得した時間はUTCでの時間となっているのでそれを変換する必要があったため、実行環境のタイムゾーンを取得してそれに合った時間に変換する関数で変換しています

function ConvertTimeZone($dataTime) {
    $localTimeZone = (Get-TimeZone).Id
    # ConvertTimeBySystemTimeZoneIdの引数は変換対象時間、変換元タイムゾーン、変換先タイムゾーンの順番
    return Get-Date([TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($dataTime, "UTC", $localTimeZone)) -Format "yyyy-MM-dd HH:mm:ss"
}

環境の取得

環境一覧の取得コマンドですが、PowerAppsにはあるのですがPowerAutomateにはありませんでした

Get-AdminPowerAppEnvironment | ForEach-Object {
    $environmentName = $_.DisplayName
    $environmentId = $_.EnvironmentName
    $location = $_.Location
    if ($_.CreatedTime -ne $null) {
        $createdTime = ConvertTimeZone($_.CreatedTime)
    }
    $createdBy = $_.CreatedBy.email
    if ($_.LastModifiedTime -ne $null) {
        $lastmodified = ConvertTimeZone($_.LastModifiedTime)
    }
    $lastmodifiedBy = $_.LastModifiedBy
    LogWrite "Debug" "EnvironmentName: $environmentName, EnvironmentId: $environmentId, Location: $location, CreatedTime: $createdTime, CreatedBy: $createdBy, LastModified: $lastmodified, LastModifiedBy: $lastmodifiedBy"
}

最後に

今回調べてみてPowerAutomate系のコマンドは少ない気がしました。紹介したもの以外にも以下のサイトでは様々な例が記載されています。また、Dateverseについてはまた別の方法でのアクセスになるようなのでそちらについても今後調べてみたいと思います

MSサイト
Power Apps と Power Automate の PowerShell サポート - Power Platform | Microsoft Learn
Power Apps と Power Automate の PowerShell サポート - Power Platform | Microsoft Learn

PowerShell コマンドレットについて学び、それらをインストールして実行する方法のチュートリアルを取得してください ...

続きを読む

以下のサイトはコマンド一覧のサイトとなります

MSサイト
Microsoft.PowerApps.Administration.PowerShell Module | Microsoft Learn
Microsoft.PowerApps.Administration.PowerShell Module | Microsoft Learn

Power Apps Administration PowerShell lets you manage Power A ...

続きを読む

-M365関連, プログラム, 技術
-, ,