src/Public/Create-TraceFlag.ps1
function CreateTraceFlag { [CmdletBinding()] Param( [Parameter(Mandatory = $true)][Alias("o")]$orgAlias, [Parameter(Mandatory = $true)][Alias("m")]$duration, [Parameter(Mandatory = $false)][Alias("d")]$debuglevel ) # Get the user ID sf org display user -o $orgAlias --json | ConvertFrom-Json | Tee-Object -variable userOrgResult $userOrgResult.result.Id | Tee-Object -variable userId # Set start and expiration dates $startDate = Get-Date -Format "yyyy-MM-ddTHH:mm.sssK" $expirationDate = (Get-Date).AddMinutes($duration).ToString("yyyy-MM-ddTHH:mm.sssK") # Set default debug level if ($debuglevel -eq $null){ $debuglevel = 'SFDC_DevConsole' } # Get the debug level ID sf data query --query "SELECT Id FROM DebugLevel WHERE DeveloperName = '$debuglevel' LIMIT 1" -o $orgAlias -t -r json | ConvertFrom-Json | Tee-Object -variable debugLevelResult $debugLevelResult.result.records.Id | Tee-Object -variable debugLevelId # Get existing trace flags sf data query --query "SELECT Id FROM TraceFlag where TracedEntityID = '$userId' ORDER BY ExpirationDate DESC " -o $orgAlias -t -r json | ConvertFrom-Json | Tee-Object -variable traceFlagResult # Create or update the trace flag $commonProperties = "DebugLevelId=$debugLevelId StartDate=$startDate ExpirationDate=$expirationDate" if ($traceFlagResult.result.totalSize -eq 0) { $traceFlagProperties = "$commonProperties LogType=USER_DEBUG TracedEntityId=$userId" sf data create record -t --sobject TraceFlag --values $traceFlagProperties } else{ $traceFlagProperties = $commonProperties sf data update record -t --sobject TraceFlag --values $traceFlagProperties --record-id $traceFlagResult.result.records[0].Id } } |