|
1 | | -# Cmdlets and associated data types are defined in PowerShellLoggingModule.dll. This script file just handles attaching and detaching the PSHostIOInterceptor object. |
| 1 | +# Cmdlets and associated data types are defined in PowerShellLoggingModule.dll. This script file just handles attaching and detaching the HostIOInterceptor object. |
2 | 2 |
|
3 | 3 | $dllPath = Join-Path -Path $MyInvocation.MyCommand.ScriptBlock.Module.ModuleBase -ChildPath PowerShellLoggingModule.dll |
4 | 4 |
|
|
8 | 8 | throw |
9 | 9 | } |
10 | 10 |
|
11 | | -# Attach the interceptor |
12 | | - |
13 | | -$flags = [System.Reflection.BindingFlags]([System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::NonPublic) |
| 11 | +try { |
| 12 | + # Attach the interceptor |
14 | 13 |
|
15 | | -$uiRef = $Host.GetType().GetField('internalUIRef', $flags).GetValue($Host) |
16 | | -$ui = $uiRef.GetType().GetProperty('Value', $flags).GetValue($uiRef, $null) |
| 14 | + $flags = [System.Reflection.BindingFlags]([System.Reflection.BindingFlags]::Instance -bor [System.Reflection.BindingFlags]::NonPublic) |
17 | 15 |
|
18 | | -$externalUIField = $ui.GetType().GetField('externalUI', $flags) |
19 | | -$originalUI = $externalUIField.GetValue($ui) |
| 16 | + $uiRef = $Host.GetType().GetField('internalUIRef', $flags).GetValue($Host) |
| 17 | + $ui = $uiRef.GetType().GetProperty('Value', $flags).GetValue($uiRef, $null) |
20 | 18 |
|
21 | | -try { |
| 19 | + $externalUIField = $ui.GetType().GetField('externalUI', $flags) |
| 20 | + |
| 21 | + $originalUI = $externalUIField.GetValue($ui) |
| 22 | + |
22 | 23 | $HostIOInterceptor = [PSLogging.HostIOInterceptor]::GetInterceptor() |
23 | 24 | $HostIOInterceptor.HostUI = $originalUI |
24 | 25 |
|
25 | 26 | $externalUIField.SetValue($ui, $HostIOInterceptor) |
26 | | - |
| 27 | + |
27 | 28 | # Detach the interceptor when the module is removed. |
28 | 29 | $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { |
29 | 30 | $script:externalUIField.SetValue($script:ui, $script:originalUI) |
30 | 31 | } |
31 | 32 | } catch { |
32 | 33 | throw |
33 | 34 | } |
34 | | - |
0 commit comments