-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCaptureData.ps1
44 lines (36 loc) · 1.37 KB
/
CaptureData.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
param(
[Parameter(Mandatory=$true)]
[int] $sessionLengthInMinutes,
[Parameter(Mandatory=$false)]
[string] $outputLogsDirectory = "$PSScriptRoot\Logs"
)
$ErrorActionPreference = "Stop";
Set-StrictMode -Version 3
Assert-OperatingSystem
[ScriptBlock] $jobScriptBlock = {
param($minutes, $workingDir)
Import-Module "$workingDir/Submodules/MyMonitor/MyMonitor.psm1" -Force
Import-Module "$workingDir/Functions/CaptureData.Functions.psm1" -Force
Get-WindowTime -Minutes $minutes | Write-Output
}
[DateTime] $jobStartTime = Get-Date
$job = Start-Job `
-ScriptBlock $jobScriptBlock `
-ArgumentList @($sessionLengthInMinutes, $PSScriptRoot) `
-Verbose
while ($job.State -eq 'Running') {
[DateTime] $currentTime = Get-Date
[TimeSpan] $timespan = $currentTime - $jobStartTime
[int] $secondsPassed = $timespan.Seconds
$progress = [int](($secondsPassed / ($sessionLengthInMinutes * 60)) * 100)
Write-Progress `
-Activity "App Usage Data Capture" `
-Status "Progress: $progress%" `
-PercentComplete $progress
}
$data = Receive-Job -Job $job
Initialize-FoldersInPath -path $outputLogsDirectory
$outputDataLocation = "$outputLogsDirectory\AppUsageData$(Get-Timestamp).json"
$data | ConvertTo-Json | Out-File -FilePath $outputDataLocation -Force
# If you want an audio cue for completion:
# [Console]::Beep(2000, 3000)