diff --git a/BP_Usage_Report/BP_Usage_Report.ps1 b/BP_Usage_Report/BP_Usage_Report.ps1 new file mode 100644 index 0000000..d28a9ba --- /dev/null +++ b/BP_Usage_Report/BP_Usage_Report.ps1 @@ -0,0 +1,122 @@ +$VerbosePreference = "continue" +$CurrentUser = $env:USERNAME +#email settings + +$password = ConvertTo-SecureString 'BKW1xaHJEAgWKo8nUvRBYlP3vBIPN0m+LrtRAMbmtmu2' -AsPlainText -Force +$MailCredential = New-Object System.Management.Automation.PSCredential ("AKIAQTLVYSCHMP7BYC4U", $password) +$SMTPServer = "email-smtp.eu-central-1.amazonaws.com" +$SMTPPort = "587" +$From = "no-reply@roser.prometheusgroup.app" +$Subject = "BP usage report" +$Body = "

Herewith the BP usage report per sites



" + + + +$databases = @{ + "bp-srvsql01" = "p_rc_bp_rotterdam","p_rc_bp_gelsenkirchen","p_rc_bp_lingen" + "bp-srvsql05" = "p_rc_bp_whiting","p_rc_bp_cherry_point" +} + +foreach($server in $databases.keys ){ + + write-verbose "####################################################################" + Write-Verbose "######################### $server ######################" + write-verbose "####################################################################" + +<# + $session = New-PSSession -ComputerName $server + + Invoke-Command -Session $session -ScriptBlock { + hostname + + $VerbosePreference = "continue" + + $query = " + DECLARE @start2023 Datetime = '20230101'; + DECLARE @end2023 Datetime = '20240101'; + WITH RankedDays AS ( + SELECT + login_day, + column_2023_concurrent_user_count, + ROW_NUMBER() OVER (PARTITION BY MONTH(login_day) ORDER BY column_2023_concurrent_user_count DESC) AS rn + FROM + ( + select login_day, max(column_2023_concurrent_user_count) column_2023_concurrent_user_count from ( + SELECT + DISTINCT CAST(ul_main.logindate AS DATE) AS login_day, + ( SELECT + COUNT(DISTINCT CHECKSUM(ul_sub.fk_userid, ul_sub.createcomputer)) + FROM + tblUserLogin ul_sub + INNER JOIN tblApplication a ON a.pk_applicationid = ul_sub.fk_applicationid + WHERE + a.enumvalue IN (2, 3, 4, 5, 7, 11, 13, 15, 6, 9, 18, 10) --no rosercatalog! + AND ul_sub.logindate <= ul_main.logindate + AND ( + CASE + WHEN lastheartbeat < logoutdate + THEN lastheartbeat + ELSE logoutdate + END + ) >= ul_main.logindate + ) AS column_2023_concurrent_user_count + FROM + tblUserLogin ul_main + WHERE + ul_main.logindate >= @start2023 + AND ul_main.logindate < @end2023 + ) max_of_each_month group by login_day ) sub_query + WHERE login_day LIKE '2023%' + ) + + SELECT + login_day, + column_2023_concurrent_user_count + FROM + RankedDays + WHERE + rn <= 2 + ORDER BY + MONTH(login_day), + column_2023_concurrent_user_count DESC;" + + + + + foreach($db in $args ){ + + write-verbose "executing the query on $db" + #Invoke-Sqlcmd -Query $query -ServerInstance "localhost" -ConnectionTimeout 0 -Querytimeout 0 -Database $db | Export-CSV "C:\Users\$CurrentUser\Desktop\$db.csv" -NoTypeInformation + $Body += "$db
" + $Body += "hello" + + + } + } -ArgumentList $databases[$server] +#> + foreach($db in $databases[$server]){ + + write-verbose "copy the $db file from $server" + #Copy-Item -FromSession $session C:\Users\$CurrentUser\Desktop\$db.csv -Destination C:\Users\$CurrentUser\Desktop\$db.csv + + } + + + +} + + +$To = "pgeeraert@prometheusgroup.com" +$Cc = "" +#$Attachment = (get-childitem "C:\Users\$CurrentUser\Desktop\*.csv").FullName + +$databases.values|ForEach-Object{$body += $PSItem;$body += "
"; } + +try { + #Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -BodyAsHtml -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $MailCredential -Attachments $Attachment + +} +catch { + Write-Warning "The email failed to start" +} +$body