$PSVersionTable:Copy / paste the below commands into the PowerShell Integrated Terminal, and paste the output here
code -v
$pseditor.EditorServicesVersion
code --list-extensions --show-versions
$PSVersionTable
In VSCode Integrated Terminal when using "Start-Transcript", external commands (e.g. git.exe/ipconfig/nbtstat/etc/etc/etc) run as expected, but on completion a spurious error message is displayed.
This occurs if Start-Transcript is entered manually into the integrated console or if Start-Transcript is included in Profile.ps1. The error does not occur if transcripts are not being collected (or if Stop-Transcript is used).
The issue only occurs with external (.exe/.com etc) commands. Cmdlets do not cause a problem.
(I have tested with no profile scripts to eliminate anything in my profile)
More info available on request....
PS C:\Data\Git> Start-Transcript -OutputDirectory 'C:\Data'
PS C:\Data\Git>
PS C:\Data\Git> arp /?
Displays and modifies the IP-to-Physical address translation tables used by
<...snip...>
arp -a .... Displays the arp table.
Program 'ARP.EXE' failed to run: The method or operation is not implemented.At line:1 char:1
PS C:\Data\Git>
I'm seeing these errors even if transcription isn't running.
Edit: Nevermind, transcription is running, enforced by policy.
@gerane has reported this as well. The core problem here is that the native app you're calling is doing something that causes one of the PSHostRawUserInterface methods I don't implement to be called so it fails. The solution is to provide a more complete implementation there (though I'd rather find a way to reuse the real PowerShell ConsoleHost so that we can get past all of the current limitations).
In my case, it happens on every external command I run. Here's the innermost exception:
Message : The method or operation is not implemented.
Data : {}
InnerException :
TargetSite : System.Management.Automation.Host.BufferCell[,] GetBufferContents(System.Management.Automation.Host.Rectangle)
StackTrace : at Microsoft.PowerShell.EditorServices.TerminalPSHostRawUserInterface.GetBufferContents(Rectangle rectangle)
at System.Management.Automation.Internal.Host.InternalHostRawUserInterface.GetBufferContents(Rectangle r)
at System.Management.Automation.NativeCommandProcessor.Complete()
HelpLink :
Source : Microsoft.PowerShell.EditorServices
HResult : -2147467263
Interestingly, GetBufferContents is only called by NativeCommandProcessor.Complete() in a block where it's supposedly transcribing. But if I run Stop-Transcript, it tells me the host is not transcribing. I'll do some more digging to find out what's going on there.
Heh, nevermind. Company's saving powershell transcripts via policy. :)
@ChrisWarwick @daviwil @dlwyatt oh! great find. I just tested and disabled the transcription policies and the errors stopped happening.
I can at least make sure this is disabled when doing presentations or demos now, but would be great to see this fixed.
@daviwil @ChrisWarwick @dlwyatt The issue I encounter, is that depending on how the commands were invoked, these can become terminating errors.
For example, I have a function that runs a plaster template to create a new project, and also initializes the git repo and a bunch of other related tasks. If I run the command in the console, I get errors, but they are non-terminating. If I run this from an Editor Command, it breaks and causes these errors to be terminating errors.
@dlwyatt Thanks Dave! I don't know why I didn't look at the call stack and actually figure out why this was happening. Looks like if I implement the method enough to satisfy this code the problem should go away:
I'll try to throw that in with the next Editor Services update.
@daviwil Here is my issue from PSES PowerShell/PowerShellEditorServices#396
I looking forward to this fix. We have transcription on via Policy also.
right now any try/catch with a native command fails 100% of the time.
Most helpful comment
@dlwyatt Thanks Dave! I don't know why I didn't look at the call stack and actually figure out why this was happening. Looks like if I implement the method enough to satisfy this code the problem should go away:
https://github.com/PowerShell/PowerShell/blob/7c9b188c135ed001093641698d48a22fd016f6ab/src/System.Management.Automation/engine/NativeCommandProcessor.cs#L713
I'll try to throw that in with the next Editor Services update.