Hello, I would like to make a PowerShell script where I use the "GetFlow" function to retrieve a Power Automate flow.
Here is my config file:
{
"tenantId" : "0000000-0000-0000-0000-00000000",
"certifThumb" : "QHFHGELGEJGQJFOQQJEQJGJQLKGJQEGJEKL",
"appId" : "0000000-0000-0000-0000-00000000",
"triggerHour" : "01:00",
"outputFile" : ".\\flow-stats.txt",
"errorsFile" : ".\\flow-errors.txt",
"dataFile" : ".\\flow-data.json",
"flows" : [
{
"name": "Flux",
"mailbox": "aaaaaa@aaaa.onmicrosoft.com",
"serviceAccount" : "PS_FLOW"
}
]
}
(Obviously I changed the confidential values to send the script here)
Here is my powershell script:
$ErrorActionPreference = "Stop"
$PSModulesNames = "Microsoft.PowerApps.PowerShell", "Microsoft.PowerApps.Administration.PowerShell"
$configFileName = "Flow-Stats.config"
$jsonDateFormat = "o" #2022-03-23T16:37:51.8011737+01:00
$PSModulesNames | ForEach-Object {
Import-Module $_ -EA SilentlyContinue
$module = Get-Module -Name $_
if($null -eq $module) {
throw "Module '$_' not found"
}
}
$config = Get-Content ".\$configFileName" -Encoding UTF8 -EA SilentlyContinue | ConvertFrom-Json -EA SilentlyContinue
if($null -eq $config) {
throw "Error reading config file '$configFileName'"
}
#Add-PowerAppsAccount -TenantID $config.tenantId -CertificateThumbprint $config.certifThumb -ApplicationId $config.appId
$data = Get-Content ".\$($config.dataFile)" -Encoding UTF8 -EA SilentlyContinue | ConvertFrom-Json -EA SilentlyContinue
if($null -eq $data) {
$data = [PSCustomObject]@{
lastExec = [datetime]::MinValue.ToString($jsonDateFormat)
}
}
$lastExec = Get-Date $data.lastExec
$now = Get-Date
$flowIds = @{}
function GetFlowRuns {
param(
[string] $FlowName,
[datetime] $Start,
[datetime] $End
)
$runs = @(Get-FlowRun -FlowName $FlowName | Where-Object {
$date = Get-Date $_.StartTime
return $date -ge $Start -and $date -lt $End
})
$runCount = $runs.Count
$errors = @($runs | Where-Object { $_.Status -eq "Failed" })
$errorsCount = $errors.Count
return [PSCustomObject]@{
runCount = $runCount
errorCount = $errorsCount
errors = $errors | ForEach-Object {
return [PSCustomObject]@{
date = (Get-Date $_.StartTime).ToString($jsonDateFormat)
message = $_.Internal.properties.error.message
}
}
}
}
But unfortunately when I run my powershell script nothing happens. Could you help me please ? Thanks in advance !