Param( [string]$asServer = "powerbi://api.powerbi.com/v1.0/myorg/myworkspace", [string]$asServerPrimary = $asServer, [string]$asDatabase = "mydataset", [string]$daxQueriesFolder = "myfolder", [string]$outputFile = "TestOutput.txt", #[int]$queryFrequencySeconds = 0, #sleep time between queries [int]$numberOfThreads = 1, #20, #4, #150,#4,#4000, # number of parallel users [int]$numberOfCycles = 1, #5, #10,#1000, # number of cycles how many times the same is executed [int]$maxQueries = 1 # number of files ) Get-Date Write-Output "QueriesFolder $QueriesFolder" Write-Output "numberOfThreads $numberOfThreads" Write-Output "numberOfCycles $numberOfCycles" Write-Output "maxQueries $maxQueries" Login-PowerBI | Out-Null $ErrorActionPreference = "Stop" $useEffectiveUserName = $true; $BaseFolder = $PSScriptRoot $QueryFolder = $BaseFolder + "\" + $QueriesFolder $ErrorFile = $BaseFolder + "\Logs_P\" + "ErrorFileQSO.txt" Write-Host $ErrorFile $Queries = dir $QueryFolder Add-Type -Path "C:\Program Files\Microsoft.NET\ADOMD.NET\160\Microsoft.AnalysisServices.AdomdClient.dll" Add-Type -Path "C:\Program Files\Microsoft SQL Server\160\SDK\Assemblies\Microsoft.AnalysisServices.Tabular.dll" #."D:\QueryCode\tests\Invoke-Parallel.ps1" ."C:\Users\owner\documents\Invoke-Parallel1.ps1" # CHANGE these global settings. This controls the total number of threads that are generating load. $threads = @(1..$numberOfThreads) #15 threads $cycles = @(1..$numberOfCycles) #999999 means loop nearly forever #get the full list of users we can impersonate function GetUsersList { [System.Collections.ArrayList]$list = @(); $conn = New-Object -TypeName Microsoft.AnalysisServices.AdomdClient.AdomdConnection; $conn.ConnectionString = "Provider=MSOLAP;Data Source=$asServerPrimary;Initial Catalog=$asDatabase;Connect Timeout=120" $conn.Open(); $cmd = New-Object -TypeName Microsoft.AnalysisServices.AdomdClient.AdomdCommand; $cmd.Connection = $conn; $cmd.CommandTimeout = 600; $cmd.CommandText = 'select distinct MemberName from $System.TMSCHEMA_ROLE_MEMBERSHIPS'; $da = new-Object Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter($cmd) $ds = new-Object System.Data.DataSet $rowCount = $da.Fill($ds) $conn.Close(); $conn = $null; return @($ds.Tables[0] | select -ExpandProperty MemberName) }