Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Powershell Integrated Console Crashes On Startup #1331

Closed
gerryw1389 opened this issue May 21, 2018 · 14 comments · Fixed by PowerShell/PowerShellEditorServices#686
Closed

Powershell Integrated Console Crashes On Startup #1331

gerryw1389 opened this issue May 21, 2018 · 14 comments · Fixed by PowerShell/PowerShellEditorServices#686

Comments

@gerryw1389
Copy link

NOTE: I'm using the latest version of VSCode using the portable zip version.

I am experiencing a problem with VSCode Powershell Editor Services:

An error occurred while starting PowerShell Editor Services:

A parameter cannot be found that matches parameter name 'Path'.
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)

Logs:
5/21/2018 12:05:51 PM [NORMAL] - Visual Studio Code v1.23.1 64-bit
5/21/2018 12:05:51 PM [NORMAL] - PowerShell Extension v1.7.0
5/21/2018 12:05:51 PM [NORMAL] - Operating System: Windows 64-bit
5/21/2018 12:05:51 PM [NORMAL] - Path specified by 'powerShellExePath' setting - '' - not found, reverting to default PowerShell path.
5/21/2018 12:05:51 PM [NORMAL] - Language server starting --
5/21/2018 12:05:51 PM [NORMAL] - exe: C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
5/21/2018 12:05:51 PM [NORMAL] - args: C:\Users\my.user.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices\Start-EditorServices.ps1 -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '1.7.0' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'C:\Users\my.user.vscode\extensions\ms-vscode.powershell-1.7.0\modules' -EnableConsoleRepl -LogLevel 'Normal' -LogPath 'C:\Users\my.user.vscode\extensions\ms-vscode.powershell-1.7.0\logs\1526922351-5efd9c46-18c1-4100-b636-474b87667d2d1526922347568\EditorServices.log' -SessionDetailsPath 'C:\Users\my.user.vscode\extensions\ms-vscode.powershell-1.7.0\sessions\PSES-VSCode-19660-779493' -FeatureFlags @()
5/21/2018 12:05:52 PM [NORMAL] - powershell.exe started, pid: 14248
5/21/2018 12:06:51 PM [NORMAL] - Language server startup failed.
5/21/2018 12:06:51 PM [ERROR] - The language service could not be started:
5/21/2018 12:06:51 PM [ERROR] - Timed out waiting for session file to appear.

What I've done to try to resolve:

  1. Open Start-EditorServices.ps1 and edit line 108 to remove the -Force parameter from Set-Content even though it is a valid parameter. Then it said that -Path is not a valid parameter. Not sure what to do here because it keeps saying valid parameters are not.

Attached Logs

logs.zip

@TylerLeonhardt
Copy link
Member

Hi there, thanks for this report can you enable Diagnostic logs and attach those?

Here are the steps:
https://github.com/PowerShell/vscode-powershell#2-capture-verbose-logs-and-send-them-to-us

Note, I'd like you to set it to Diagnostic, not Verbose.

@gerryw1389
Copy link
Author

logs.zip
Interesting that just the act of changing to Diagnostic, it's not crashing now. New files attached.

@TylerLeonhardt
Copy link
Member

So you're only seeing this when LogLevel is set to Normal?

@gerryw1389
Copy link
Author

gerryw1389 commented May 22, 2018

diagnostic
verbose

Diagnostic works (top), Verbose is what it was before and causes error (second). Normal does the same as verbose - Error. Here are the latest logs as well.
logs.zip
I double checked the script Start-EditorServices and it looks Iike I added back the -Force parameter on line 108 as it didn't make sense to remove it.

@rjmholt
Copy link
Collaborator

rjmholt commented May 22, 2018

@gerryw1389 Is the stack trace you posted above the full stack trace, or was there another part saying it was Start-EditorServices.ps1 on line 108?

You might be able to get a better stack trace by running the start script manually:

Start-EditorServices.ps1 -HostName standalone -HostProfileId '0' -HostVersion '1.0.0' -LogPath 'pses_standalone.log' -LogLevel Diagnostic -SessionFilePath 'pses_session.json' -FeatureFlags @() -BundledModulePath $PsesModuleDir

The script itself lives at $PsesModuleDir\PowerShellEditorServices/Start-EditorServices.ps1.

That module dir lives at a path like:

$PsesModuleDir = 'C:\Users\<your-username>\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\'

@gerryw1389
Copy link
Author

gerryw1389 commented May 22, 2018

I don't have those parameters.. I have:

param(
    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [string]
    $HostName,

    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [string]
    $HostProfileId,

    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [string]
    $HostVersion,

    [ValidateNotNullOrEmpty()]
    [string]
    $BundledModulesPath,

    [ValidateNotNullOrEmpty()]
    $LogPath,

    [ValidateSet("Diagnostic", "Normal", "Verbose", "Error", "Diagnostic")]
    $LogLevel,

	[Parameter(Mandatory=$true)]
	[ValidateNotNullOrEmpty()]
	[string]
	$SessionDetailsPath,

    [switch]
    $EnableConsoleRepl,

    [switch]
    $DebugServiceOnly,

    [string[]]
    $AdditionalModules,

    [string[]]
    $FeatureFlags,

    [switch]
    $WaitForDebugger,

    [switch]
    $ConfirmInstall,

    [switch]
    $Stdio,

    [string]
    $LanguageServicePipeName = $null,

    [string]
    $DebugServicePipeName = $null
)

I tried hard coding some paths:

$PsesModuleDir = 'C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices'
C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices\Start-EditorServices.ps1 -HostName standalone `
-HostProfileId '0' `
-HostVersion '1.0.0' `
-LogPath 'C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices\pses_standalone.log' `
-LogLevel Diagnostic `
 -SessiondetailsPath 'C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices\pses_session.json' `
 -FeatureFlags @() `
 -BundledModulesPath $PsesModuleDir

But I get the following:

Start-Transcript : Transcription cannot be started.
At C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices\Start-EditorServices.ps1:83 char:5
+     Start-Transcript (Join-Path (Split-Path $LogPath -Parent) Start-E ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Transcript], PSInvalidOperationException
    + FullyQualifiedErrorId : CannotStartTranscription,Microsoft.PowerShell.Commands.StartTranscriptCommand
 
VERBOSE: 
#-- Removing PSReadLine module -----------------------------------------------
VERBOSE: Removing the imported "PSConsoleHostReadline" function.
VERBOSE: 
#-- Updated PSModulePath to: -------------------------------------------------
VERBOSE: C:\Users\gerry.williams\Documents\WindowsPowerShell\Modules
VERBOSE: C:\Program Files\WindowsPowerShell\Modules
VERBOSE: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
VERBOSE: C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices
VERBOSE: 
#-- Check required modules available -----------------------------------------
VERBOSE: Testing module availability PowerShellGet 
VERBOSE: Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1'.
VERBOSE: PowerShellGet  found
VERBOSE: 
#-- Start up PowerShellEditorServices ----------------------------------------
VERBOSE: Importing PowerShellEditorServices
VERBOSE: ERRORS caught starting up EditorServicesHost
VERBOSE: The specified module 'PowerShellEditorServices' was not loaded because no valid module file was found in any module directory.

An error occurred while starting PowerShell Editor Services:

The specified module 'PowerShellEditorServices' was not loaded because no valid module file was found in any module directory.

But, if I import the module manually, it runs fine - but doesn't show that function:

[C:\_gwill\temp]
> Import-Module -Name 'C:\Users\gerry.williams\.vscode\extensions\ms-vscode.powershell-1.7.0\modules\PowerShellEditorServices'
[C:\_gwill\temp]
> get-command -Module PowerShellEditorServices
CommandType     Name                                               Version    Source                                                                                                                               
-----------     ----                                               -------    ------                                                                                                                               
Function        Compress-LogDir                                    1.7.0      PowerShellEditorServices                                                                                                             
Function        Get-PowerShellEditorServicesVersion                1.7.0      PowerShellEditorServices                                                                                                             
Function        Start-EditorServicesHost                           1.7.0      PowerShellEditorServices   

@gerryw1389
Copy link
Author

2 Things on this:

  1. I use the portable version of VSCode and sync to Google drive so there may be an issue there somehow.
  2. If I'm the only user reporting this issue, go ahead and close it and I will just set logging to diagnostics. It's odd that I'm able to replicate this easily though - probably something in my environment.

I'm domain joined surface book 2. System Info:
systeminfo.txt

Looking around, the only thread I found related to this was 603.

One more thing, steps to reproduce:

  1. Open VSCode
  2. Select preferences - Settings. Change "powershell.developer.editorServicesLogLevel" to Diagnostic, it yields the top image from above.

Or

  1. Open VSCode
  2. Select preferences - Settings. Change "powershell.developer.editorServicesLogLevel" to Verbose or Normal, it shows the second image from above.

@rkeithhill
Copy link
Collaborator

What output do you get when you execute this command Get-Command Set-Content | fl *? I'm just wondering if you have a proxy-command for Set-Content that doesn't implement -Force.

@rkeithhill
Copy link
Collaborator

rkeithhill commented May 23, 2018

So here's one diff when Diagnostic is used:

if ($LogLevel -eq "Diagnostic") {
    $VerbosePreference = 'Continue'
    Start-Transcript (Join-Path (Split-Path $LogPath -Parent) Start-EditorServices.log) -Force
}

This will create the Start-EditorServices.log file and any necessary directories.

@gerryw1389
Copy link
Author

No proxies set:

> get-command set-content | fl *


HelpUri             : https://go.microsoft.com/fwlink/?LinkID=113392
DLL                 : C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\v4.0_3.0.0.0_
                      _31bf3856ad364e35\Microsoft.PowerShell.Commands.Management.dll
Verb                : Set
Noun                : Content
HelpFile            : Microsoft.PowerShell.Commands.Management.dll-Help.xml
PSSnapIn            :
Version             : 3.1.0.0
ImplementingType    : Microsoft.PowerShell.Commands.SetContentCommand
Definition          :
                      Set-Content [-Path] <string[]> [-Value] <Object[]> [-PassThru] [-Filter <string>] [-Include
                      <string[]>] [-Exclude <string[]>] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm]
                      [-UseTransaction] [-NoNewline] [-Encoding <FileSystemCmdletProviderEncoding>] [-Stream <string>]
                      [<CommonParameters>]

                      Set-Content [-Value] <Object[]> -LiteralPath <string[]> [-PassThru] [-Filter <string>] [-Include
                      <string[]>] [-Exclude <string[]>] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm]
                      [-UseTransaction] [-NoNewline] [-Encoding <FileSystemCmdletProviderEncoding>] [-Stream <string>]
                      [<CommonParameters>]

DefaultParameterSet : Path
OutputType          : {}
Options             : ReadOnly
Name                : Set-Content
CommandType         : Cmdlet
Source              : Microsoft.PowerShell.Management
Visibility          : Public
ModuleName          : Microsoft.PowerShell.Management
Module              : Microsoft.PowerShell.Management
RemotingCapability  : PowerShell
Parameters          : {[Value, System.Management.Automation.ParameterMetadata], [PassThru,
                      System.Management.Automation.ParameterMetadata], [Path,
                      System.Management.Automation.ParameterMetadata], [LiteralPath,
                      System.Management.Automation.ParameterMetadata]...}
ParameterSets       : {[-Path] <string[]> [-Value] <Object[]> [-PassThru] [-Filter <string>] [-Include <string[]>]
                      [-Exclude <string[]>] [-Force] [-Credential <pscredential>] [-WhatIf] [-Confirm]
                      [-UseTransaction] [-NoNewline] [-Encoding <FileSystemCmdletProviderEncoding>] [-Stream <string>]
                      [<CommonParameters>], [-Value] <Object[]> -LiteralPath <string[]> [-PassThru] [-Filter <string>]
                      [-Include <string[]>] [-Exclude <string[]>] [-Force] [-Credential <pscredential>] [-WhatIf]
                      [-Confirm] [-UseTransaction] [-NoNewline] [-Encoding <FileSystemCmdletProviderEncoding>]
                      [-Stream <string>] [<CommonParameters>]}

Not sure what's going on here.

@RichieRoxx
Copy link

RichieRoxx commented Jun 12, 2018

I have the same problem and also installed powershell core. I noticed when I select the powershell core framework the language services work.
I tried the PowerShell language services on three machines. On two I could reproduce the error, on one i couldn't. Not really sure whats the difference:

machine 1: domain joined, W10 build 1709 -> failed
machine 2: non-domain joined, W10 build 1803, hyperv virtualized -> failed
machine 3: non-domain joined, W10 build 1803 -> success

@RichieRoxx
Copy link

ok, i have put a "get-command set-content" in the Start-Editorservices.ps1 and found the problem:

a 3rd Party powershell Module für Microsofft dynamics CRM also has a cmdlet that is called "set-content", which is used instead of the built-in cmdlet:

Name : Set-Content
CommandType : Cmdlet
Definition :
Set-Content [-InputObject] [-PassThru] []

               Set-Content [-Entity] <string> [-Id] <guid> [-Attributes] <hashtable> [-PassThru]
               [<CommonParameters>]

Path :
AssemblyInfo :
DLL : C:\Program
Files\WindowsPowerShell\Modules\AMSoftware.Crm\1.3.1.2\AMSoftware.Crm.Powershell.Commands.dll
HelpFile : AMSoftware.Crm.Powershell.Commands.dll-Help.xml
ParameterSets : {[-InputObject] [-PassThru] [], [-Entity] [-Id]
[-Attributes] [-PassThru] []}
ImplementingType : AMSoftware.Crm.PowerShell.Commands.Content.SetContentCommand
Verb : Set
Noun : Content

so most certainly not a bug. If you have a good idea how to circumvent this, I'd be thankful. Also I will file an issue with the creator of the module.

@rkeithhill
Copy link
Collaborator

You've got to be kidding ... sigh. Well, we can fix this by module qualifying the set-content command. Thanks for tracking this down!!!

rkeithhill added a commit to PowerShell/PowerShellEditorServices that referenced this issue Jun 12, 2018
redefines set-content, breaks Start-PSES

Fixes PowerShell/vscode-powershell#1331

I wish we didn't have to module qualify command names like this but
we've been bitten several times now by overridden commands.
@RichieRoxx
Copy link

I did the changes manually what you did in that commit and it works fine for me. Thanks for making the changes!

rkeithhill added a commit to PowerShell/PowerShellEditorServices that referenced this issue Jun 13, 2018
* Fix issue where MS Dynamics CRM
redefines set-content, breaks Start-PSES

Fixes PowerShell/vscode-powershell#1331

I wish we didn't have to module qualify command names like this but
we've been bitten several times now by overridden commands.

* Module qualify more commands

I'm, for the moment, drawing the line at the *-Object commands.

I really hate having to do this but I hate dealing with
externally inflicted bugs even more.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants