Internals/Invoke-AdalCommand.ps1
function Invoke-AdalCommand { [CmdletBinding()] Param( [Parameter( mandatory=$true, Position=0, ValueFromPipeline = $true )] $Command, $Parameters ) "Invoking ADAL Runspace with Command..." | Log-AadSupport $Command | Log-AadSupport if($Parameters) { "Params for Command..." | Log-AadSupport $Parameters | Log-AadSupport } $ErrorHandlingBegin = { $Error.Clear() } $ErrorHandlingEnd = { $Error } # Setup Runspace $RunspaceName = "AadSupportAdal" $PowerShell = [powershell]::Create() IF(-not $Global:AadSupportAdalRunspace) { $Global:AadSupportAdalRunspace = [runspacefactory]::CreateRunspace() } $PowerShell.runspace = $Global:AadSupportAdalRunspace #$PowerShell.runspace = $Global:AadSupport.Runspace.Adal.Instance $PowerShell.runspace.Name = $RunspaceName $RunspaceState = $PowerShell.runspace.RunspaceStateInfo.State if($RunspaceState -eq "BeforeOpen") { $PowerShell.runspace = $PowerShell.runspace.Open() } # Clear errors in runspace [void]$PowerShell.AddScript($ErrorHandlingBegin) # IMPORT LOGGING IN RUNSPACE $PowerShell.runspace.SessionStateProxy.SetVariable('GlobalParams',$Global:AadSupport) [void]$PowerShell.AddScript({ $ImportLogging = "$($GlobalParams.Path)\Internals\imports\Log-AadSupportRunspace.ps1" . $ImportLogging }) $PowerShell.Invoke() $PowerShell.Commands.Clear() # Run Command [void]$PowerShell.AddScript($Command).AddArgument($Parameters) $RunCommand = $PowerShell.Invoke() $PowerShell.Commands.Clear() # Get Errors inside runspace [void]$PowerShell.AddScript($ErrorHandlingEnd) $ErrorInsideRunspace = $PowerShell.Invoke() $PowerShell.Dispose() if($RunCommand) { $RunCommand | Log-AadSupport return $RunCommand } if($ErrorInsideRunspace) { $ErrorInsideRunspace | Log-AadSupport -Force return $ErrorInsideRunspace } } <# TEST #> <# $Params = @{} $MyCommand = { Param($params) try { return "TEST" $result = $Global:AdalContext.AcquireToken($params.ResourceId,$params.ClientId,$params.Redirect,$params.Prompt,$params.UserId, $params.ExtraQueryParams) } catch { $_ } return $result.AccessToken } $myvar = $null Invoke-AdalCommand -Command $MyCommand -Parameters $Params -OutVariable $myvar $var #> |