Change:
I'd like to recommend making PowerShell the default terminal program on Windows when the user hasn't configured their path (and when the environment variable hasn't been explicitly set). Since PowerShell will now be the default terminal program in Windows 10 going forward (), I think it makes sense to make it the default in VS Code on Windows as well. What do you think?
I absolutely agree with PowerShell being Default Term.
Agreed!!
Yep. Please.
Couldn't agree more with the other people.
Can't argue at all. Seems natural that it would follow the Windows default command line program.
I agree
isn't set by default? Is it possible to tell if it's explicitly set?
Sounds like an great idea :)
I do agree.
looks like it is set to by default. That was my understanding too but someone suggested that there are cases when it isn't set; I don't have any data to back that up. Even though Windows 10 is going to default to PowerShell in the UI now, I haven't heard whether they'll change to point to PowerShell. Either way, since PowerShell is far better than for developers, it makes sense to default to it in VS Code on Windows. If the team decides it's better to stick with , I might see if users of the PowerShell extension would be OK with us auto-configuring the terminal to point to PowerShell on Windows.
I'm concerned about breaking people's workflow. The little experience I do have suggests that we may be by switching this. Specifically I recall it being very slow doing trivial commands and one of my most used commands before I jumped over to Linux was which throws a scary looking error in PS. By default on Windows does the post mean that powershell will appear first when you search for , with also matching the search? Because that at least gives people a very clear option, configuring the integrated terminal is a little less trivial. It also seems preferable to rather get the Windows team to make point to (64-bit) Powershell rather than updating every tool to work around it? Right now I believe it points at the 32-bit version of by default, even on 64-bit machines. Having powershell update the config in the meantime makes total sense though (via a messagebox?).
What this means (from the MS post): Regarding: No. Folks should always be able to find and run it if they need/want to. Yes. There are commands that are not completely emulated in PowerShell e.g. (alias) works but not . Folks have been learning PowerShell over the past and I think its time has come. The equivalent of in PS is or if you prefer to type less. Also, try to do this with your CMD prompt. :-) !
I agree too.
Agree
Of course!!!!
I vote yes.
YES!
I haven't heard anything against this yet either here or from the team so I'd love to accept a PR from someone who knows things about powershell and see how it goes in Insiders :stuckouttongue:. Here are some recommendations on the implementation: Don't point at in as this points to the 32-bit version on 64-bit machines Powershell should only be the default on Windows 10, use , and to get whether it's 32/64-bit Windows 10 and point at correct path Move in to and generate the path there (for ). Point at the current Windows installation directory without any IO (env var?)
The file doesn't exist AFAICT. Is the idea to create a in the electron-browser dir?
yes this would need to be created, the reason being because you can't access or from common/ as it needs to be able to run in a browser.
take a look at the above commit, which implements your requirements above (I think). All except the requirement to look at x86 vs. x64 - that is not necessary, as . However, taking your direction literally, it does not call  in the case of Win10/Powershell and therefor does not take into consideration to allow the user to override. Is this what you intended? Or, should be updated to return Powershell instead? I realize this could have unintended effects, since seems to be called in multiple places by VSCode internally...
Thanks let's discuss in the PR.
To verifier: check that powershell is now the default terminal shell on Windows 10
Please update the documents:
Thanks created

Discussion:
export const TERMINAL_DEFAULT_SHELL_LINUX = !platform.isWindows ? (process.env.SHELL || 'sh') : 'sh'; export const TERMINAL_DEFAULT_SHELL_OSX = !platform.isWindows ? (process.env.SHELL || 'sh') : 'sh'; <del> export const TERMINAL_DEFAULT_SHELL_WINDOWS = processes.getWindowsShell(); </del> export const TERMINAL_DEFAULT_RIGHT_CLICK_COPY_PASTE = platform.isWindows;

import nls = require('vs/nls'); import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { GlobalQuickOpenAction } from 'vs/workbench/browser/parts/quickopen/quickopen.contribution'; <del> import { ITerminalService, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_PANEL_ID, TERMINAL_DEFAULT_SHELL_LINUX, TERMINAL_DEFAULT_SHELL_OSX, TERMINAL_DEFAULT_SHELL_WINDOWS, TERMINAL_DEFAULT_RIGHT_CLICK_COPY_PASTE } from 'vs/workbench/parts/terminal/common/terminal'; </del> <ins> import { ITerminalService, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_PANEL_ID, TERMINAL_DEFAULT_SHELL_LINUX, TERMINAL_DEFAULT_SHELL_OSX, TERMINAL_DEFAULT_RIGHT_CLICK_COPY_PASTE } from 'vs/workbench/parts/terminal/common/terminal'; import { TERMINAL_DEFAULT_SHELL_WINDOWS } from 'vs/workbench/parts/terminal/electron-browser/terminal'; </ins> import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';

<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; import * as os from 'os'; import platform = require('vs/base/common/platform'); import processes = require('vs/base/node/processes'); const powerShellExePath = !process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432') ? `${process.env.windir}System32WindowsPowerShellv1.0powershell.exe` : `${process.env.windir}SysnativeWindowsPowerShellv1.0powershell.exe`; const isAtLeastWindows10 = platform.isWindows && parseFloat(os.release()) >= 10; export const TERMINAL_DEFAULT_SHELL_WINDOWS = isAtLeastWindows10 ? powerShellExePath : processes.getWindowsShell(); </ins>

'use strict'; <del> //import * as assert from 'assert'; </del> import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; <del> //import { TerminalInstance } from 'vs/workbench/parts/terminal/electron-browser/terminalInstance'; </del> import { TerminalService } from 'vs/workbench/parts/terminal/electron-browser/terminalService'; <del> import { TERMINAL_DEFAULT_SHELL_LINUX, TERMINAL_DEFAULT_SHELL_OSX, TERMINAL_DEFAULT_SHELL_WINDOWS } from 'vs/workbench/parts/terminal/common/terminal'; </del> <ins> import { TERMINAL_DEFAULT_SHELL_LINUX, TERMINAL_DEFAULT_SHELL_OSX } from 'vs/workbench/parts/terminal/common/terminal'; import { TERMINAL_DEFAULT_SHELL_WINDOWS } from 'vs/workbench/parts/terminal/electron-browser/terminal'; </ins> import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TPromise } from 'vs/base/common/winjs.base';