Get-IbReport.psm1
<#
.Synopsis Displays flex query results from Interactive Brokers. .Description Displays flex query V3 results from Interactive Brokers. .Parameter Query Flex query ID of Interactive Brokers. .Parameter Token Your flex web service token in Interactive Brokers. .Example # Display flex query result, token is store in $Env:ibtoken. Get-IbReport -Query <Flex Query ID> .Example # Display flex query result, specific token parameter. Get-IbReport -Query <Flex Query ID> -Token <Token> .LINK Online version: https://www.interactivebrokers.com/en/software/am/am/reports/flex_web_service_version_3.htm #> function Get-IbReport { [CmdletBinding()] param( $Query, [Switch] $Token ) if ($token -ne $true) { if ((Test-Path "$env:appdata\Microsoft\Windows\PowerShell\IbToken.txt") -ne $true) { Write-Host "Please run 'Get-IbReport -Token' to provide Interactive Brokers token (Missing)" -ForegroundColor White -BackgroundColor Red } else { ## Define variables $ib_token = Get-Content "$env:appdata\Microsoft\Windows\PowerShell\IbToken.txt" $ib_version = 3 $init_url = "https://gdcdyn.interactivebrokers.com/Universal/servlet/FlexStatementService.SendRequest" $getdata_url = "https://gdcdyn.interactivebrokers.com/Universal/servlet/FlexStatementService.GetStatement" #Authenticate to server $Body = @{ t = $ib_token q = $query v = $ib_version } $response = Invoke-WebRequest $init_url -Body $Body -Method 'POST' [xml]$ib_ref = $response.Content # Display IB Response Code # $ib_ref.FlexStatementResponse.ReferenceCode #Retrieve statement data $Body = @{ q = $ib_ref.FlexStatementResponse.ReferenceCode t = $ib_token v = $ib_version } $response = Invoke-WebRequest $getdata_url -Body $Body -Method 'POST' [xml]$xml = $response.Content #TCF if ($xml.FlexQueryResponse.type -eq "TCF") { $result = $xml.FlexQueryResponse.FlexStatements.FlexStatement.TradeConfirms.TradeConfirm } #AF if ($xml.FlexQueryResponse.type -eq "AF") { $result = $xml.FlexQueryResponse.FlexStatements.FlexStatement.ChangeInDividendAccruals.ChangeInDividendAccrual } #Print result return $result } } else { Read-Host -Prompt "`nPlease provide token" | Out-File $env:appdata\Microsoft\Windows\PowerShell\IbToken.txt -Force Write-Host "`nYou can now run this with -Query to get report information" -ForegroundColor Green Write-Host "If you need to change the token, please run 'Get-IbReport -token' again`n" -ForegroundColor Green } } Export-ModuleMember -Function Get-IbReport |