ProjectWise Performance Report

Hello everyone,

For those of you at the conference, this was the dashboard I showed in my presentation and for those not at the conference, this is a dashboard on performance monitoring inside of ProjectWise using PowerShell.  Please find the attached documents to getting started with setting up performance monitoring on your system.  There is a PowerShell script that needs to be run on some kind of scheduled task at the various locations you want to test, the template for the PowerBi report and a setup document to help you link the results from your script with PowerBi.  For any questions or discussion please post to this thread.  Enjoy!



UPDATE March 16, 2020

Change log
- Now supports WSG metrics, activated with the -IncludeWSGData switch (requires PWPS_WSG to be installed if activated)
- Added more verbose logging
- Added Environment table and WSG table to output
- Updated the call to get currently connected users (should perform better)
- Now only clears files created by the script from the working directory (was previously clearing everything)
- If you do not want WSG data returned you do not need to activate the switch, or change your current script in any way.
- If you do with to collect WSG data please remember to install PWPS_WSG the same way you install PWPS_DAB
- A new datatable is returned for Environment data, which will be added to the output dataset
- No breaking changes have been made.

  • While testing an export to SQLLITE I did the following, just sharing might find it useful..

    $scriptFolder = (([System.IO.Directory]::GetParent($MyInvocation.MyCommand.Path)).FullName)
    $PWPerformanceReportVariables = @{
        Connection = "Office LAN";
        Location = "Melbourne, Victoria";
        ConnectingViaCache = "True";
        Datasource = "";
        ProjectWiseUserName = "PWUserName";
        ProjectWisePassword = (ConvertTo-SecureString -String PWPassword -AsPlainText -Force);
        OutputType = "DataTable";
    $PerformanceDataset = Get-PWPerformanceReportData @PWPerformanceReportVariables -Verbose
    foreach ($Table in $PerformanceDataset.Tables)
        #create a new datatable to populate with the performance data
        $dt = New-Object System.Data.Datatable ($Table.TableName)
        #add the columns to the datatable. We can use the property names of the properties object as our column names
        # Get a list of the performance properties.
        $PWperformanceProperties = $Table | Get-Member -MemberType Property
        # Add columns to the datatable for each of the properties in $docProperties
        foreach ($property in $PWperformanceProperties){
            $dt.Columns.Add($property.Name) | Out-Null
        #create a new datarow, loop through the performance data and populate the row, and then add the row to the datatable
        # Create New Datarow
        $dr = $dt.NewRow()
        # Populate Datarow with performance values
        foreach ($column in $dt.Columns) {
            $dr[$column.ColumnName] = $Table.$($column.ColumnName)
        # Add new row to the datatable
        $SQLLITE = @{
            SourceDataTable = $dt;
            OutputFolder = $scriptFolder;
            OutputFileName = "PW_Performance.sqlite";
        #Export dataset to a SQLLITE database            
        Export-DataTableToSQLiteDB @SQLLITE -Append

Reply Children
No Data