Commit Graph
100 Commits
Author SHA1 Message Date
Steve Lee 5bc3d15a30 Check if a reparsepoint is a symlink before trying to get target (#9895) 2019-07-08 11:40:53 +05:00
Steve Lee 4d3f74eddc Update console startup and help url for PowerShell docs (#9775) 2019-06-19 10:45:47 -07:00
Steve Lee 981c990d74 Make UseAbbreviationExpansion and TempDrive official features (#9872) 2019-06-13 13:05:37 -07:00
Steve Lee 89db7505d6 Have console host not enter command prompt mode when using Read-Host -Prompt (#9743)
`Read-Host` calls into `$Host.UI.Prompt()`.  However, this method is also used when the host prompts for mandatory parameters that aren't provided.  The method expects to be called when given a `FieldDescription` and if the input starts with `!` it enters `CommandPromptMode`.  In this mode, you can type `!?` to request help, for example.  However this mode is not something you can use via `Read-Host` (only if calling `$Host.UI.Prompt()` directly passing in a well constructed `FieldDescription`).  When using `Read-Host -Prompt`, the cmdlet creates a `FieldDescription` where the name is the prompt and the rest of the properties are empty.

The fix is that if `Label` is empty, we can assume it's being called from `Read-Host` rather than being called to prompt for a mandatory parameter and thus not enter `CommandPromptMode`.
2019-06-09 07:55:11 -07:00
Steve Lee b4e2423fab Fix use of Start-Process http://bing.com (#9793) 2019-06-04 14:36:12 -07:00
Steve Lee 61c7b7f120 Fix daily CodeCoverageAndTest build by explicitly calling Start-PSBootStrap (#9724) 2019-05-24 11:13:40 -07:00
Steve Lee ba94c6cfeb Run Start-PSBootStrap in Code Coverage build to install .NET SDK (#9690) 2019-05-23 11:07:37 -07:00
Steve Lee 29e21470d9 Port PowerShell to .NET Core 3.0 (#9597) 2019-05-21 13:43:51 +08:00
Steve Lee 68ae58eca3 Fix use of unicode ellipsis in xml (#9589) 2019-05-14 11:58:27 +05:00
Steve Lee a96b4c0404 Update use of "PowerShell Core" to just "PowerShell" (#9513) 2019-05-10 15:34:27 -07:00
Steve Lee 1d28144e99 Enable recursion into OneDrive (#9509) 2019-05-06 17:28:00 -07:00
Steve Lee 346ab8c9d4 Change MatchType for EnumerationOptions to be Win32 (#9529) 2019-05-06 17:20:08 -07:00
Steve Lee 592f897d21 allow test to work in cases where you can't create $profile 2019-05-04 07:44:30 -07:00
Steve Lee 3b5663ee97 correctly delete $profile in all cases 2019-05-04 07:12:53 -07:00
Steve Lee 0c1274011c fix creation of profile 2019-05-04 06:45:43 -07:00
Steve Lee 2d8a15af28 change -l to explicitly load user profile 2019-05-03 14:13:41 -07:00
Steve Lee f2888e9eb6 update console help 2019-05-03 11:21:02 -07:00
Steve Lee a69b20be3e add test 2019-05-03 11:12:46 -07:00
Steve Lee fb3a9098b5 Add -l support for pwsh to match POSIX shell compatibility 2019-05-03 11:00:23 -07:00
Steve Lee 3bfca6d0fa Update use of Windows PowerShell to just PowerShell (#9508) 2019-05-03 15:38:06 +05:00
Steve Lee 053f1f54aa add download link to raspbian64 to readme (#9520) 2019-05-03 00:07:58 +05:00
Steve Lee cb20154de8 Update to Pester 4.8.0 (#9510) 2019-05-02 09:56:16 +05:00
Steve Lee eedb37f4d6 Update width of datetime to accommodate change in Japan datetime format with new era starting 5/1/19 (#9503) 2019-05-01 17:07:21 -07:00
Steve Lee d318e7727e Allow passing just a dash as an arg to a file via pwsh (#9479) 2019-04-27 11:20:33 -07:00
Steve Lee e81aa9882c Enable building on Kali Linux (#9471) 2019-04-26 14:11:56 -07:00
Steve Lee 5e58e30d20 Move warning message to EndProcessing so it only shows up once (#9385) 2019-04-23 13:31:20 -07:00
Steve Lee 3e1f630695 Add Preview assets for msix (#9375) 2019-04-22 10:41:34 -07:00
Steve Lee 73114ee36c Enable building of msix package (#9289)
Add support in packaging.psm1 to produce a .msix AppX package.  Update the docker image to use the new msix package type.  Update the associated yml files so AzDevOps performs the build.

## PR Context

Enable publishing PSCore6 to Microsoft Store
2019-04-15 17:07:15 -07:00
Steve LeeandTravis Plunk b63696572f Fix skipping of tests in RemoteSession.Basic.Tests.ps1 (#9304)
Moved check if able to write to $PSHome as way to skip test to `BeforeAll` which already contained a check if running on Windows.

## PR Context

As part https://github.com/PowerShell/PowerShell/pull/9279, tests were updated to be skipped if the test requires writing to `$PSHome` but is not able to.  However, these tests already had a skip mechanism in place so the additional check caused the test to run when it should have skipped.

Co-authored-by: Travis Plunk <github@ez13.net>
2019-04-05 17:00:41 -07:00
Steve Lee fbe581134f Add more users to failures detection and fix alias for static analysis (#9292) 2019-04-05 10:01:06 -07:00
Steve LeeandTravis Plunk b8317de469 Update tests to account for when $PSHOME is readonly (#9279)
Co-Authored-By: SteveL-MSFT <slee@microsoft.com>


Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
2019-04-04 23:01:01 -07:00
Steve Lee 8a0ecaf620 Add timestamp to pshost trace listener (#9230)
Static analysis CI was executed separately.
2019-04-01 13:27:41 -07:00
Steve Lee (POWERSHELL) 586084fb6b fix short path processing 2019-04-01 12:05:45 -07:00
Steve Lee (POWERSHELL) 11f93c5a2b handle 8.3 path syntax 2019-04-01 10:41:03 -07:00
Steve Lee (POWERSHELL) 9e7fe9a9d1 only apply correct casing to directories 2019-03-31 12:06:38 -07:00
Steve Lee (POWERSHELL) 882e94f1cb add case-sensitive test 2019-03-30 09:40:14 -07:00
Steve Lee (POWERSHELL) f0264d0147 add support for NTFS streams syntax 2019-03-30 08:40:32 -07:00
Steve Lee 6bc2b55fdf return correct casing of filesystem path during normalization 2019-03-29 13:22:52 -07:00
Steve Lee 539c4a26de Enable PoshChan for getting and automatic retrieval of test failures for a PR (#9232)
Enable new capability to ask for test failures and have PoshChan automatically get (up to 10) test failures for a PullRequest if CI fails.
2019-03-27 09:51:02 -07:00
Steve LeeandTravis Plunk 3255d84627 Enable SecureString cmdlets for non-Windows (#9199)
On Unix systems, fallback to plaintext manipulation instead of using the DPAPI which is not available.

## PR Context

Currently, existing scripts that use SecureString cmdlets fail with an error complaining about crypt32.dll not being available.  This change allows these cmdlets to be used, but there is no encryption of the string.
.Net already [states](https://docs.microsoft.com/en-us/dotnet/api/system.security.securestring?view=netcore-2.1#remarks) that the contents of a SecureString are not encrypted on .Net Core.

Fix https://github.com/PowerShell/PowerShell/issues/1654

Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
2019-03-23 10:11:05 -07:00
Steve Lee c94f8c02f4 Update to new format for PoshChan settings and allow all users access to reminders (#9198)
PoshChan has been updated to use a new settings format so that authorized users are per action vs being global. 

## PR Context

Since reminders don't incur much of a resource hit for PoshChan, there's no reason not to allow everyone to use it.  See https://github.com/SteveL-MSFT/PoshChan-Bot for use instructions.
2019-03-22 10:45:51 -07:00
Steve Lee 0cd0de1e0d Add xsd for cdxml (#9177) 2019-03-21 11:22:36 +05:00
Steve Lee 98fc4a6704 fix settings to use dashes instead of underscore (#9167) 2019-03-19 12:48:49 -07:00
Steve Lee 4add730a1d Fix AzDevOps context names and add all PowerShell team members (#9164) 2019-03-19 11:16:08 -07:00
Steve Lee af0e95f8e2 Add settings for PoshChan-Bot (#9162)
Merging without waiting for recommended 24 hours as this is not a PowerShell code change, but a change for the `PoshChan` bot.
2019-03-18 17:01:14 -07:00
Steve Lee b06ad6aa61 Enable discovering modules that have names same as a culture (e.g. Az) (#8777)
Here are the major changes:
- Add logic to skip checking for possible resource directories for the first set of sub directories from the top level.
- There was an additional skip if the folder is hidden, rather than doing an explicit attribute check, change the `EnumerationOption` to skip hidden folders.
- Since the `IsPossibleModuleDirectory()` helper now only checks to see if the name matches a culture, renamed to `IsPossibleResourceDirectory()`
- When getting the default modules, we don't search recursively into individual module folders, so removed additional check for possible resource directory.
2019-02-20 12:23:27 -08:00
Steve Lee 5ece96a37f Don't use Win32 native APIs on non-Windows for crypto of secure string over remoting (#8746)
Remoting relies on Windows native crypto APIs to pass a secure string.  Of course these APIs don't work on non-Windows.  However, the remoting code does not expect this to fail so ends up in a hang waiting for an event that never happens.

Have not figured out how to return an error to the user in the case `Get-Credential` is called within a PSSession.  Currently it just quietly closes the remote connection.  @PaulHigin can you give a pointer to where this code would exist?  Debugging the current code, it has a bunch of error handlers which just result in the pssession being closed and not sure where throwing is appropriate.

Fix https://github.com/PowerShell/PowerShell/issues/8723

## PR Context  

Fix is to provide implementations of the Win32 native pinvoke apis that throw an exception.  The reason to do it this way is that there's a bunch of code that calls some of the APIs of the wrapper .Net class to setup structures that eventually get passed to the win32 api.  Throwing in the managed class causes other things to fail early that should work on non-Windows.
2019-02-07 15:36:13 -08:00
Steve Lee 26a58670c1 Enable creating relative symlinks on Windows with New-Item (#8783) 2019-02-07 11:44:23 -08:00
Steve Lee d9be6483f6 Move CommandNotFoundException suggestion to an experimental feature (#8805) 2019-02-06 13:59:14 -08:00
Steve Lee 53ad39772c Use -ErrorAction Ignore instead of SilentlyContinue with Get-Command in build.psm1 (#8832) 2019-02-06 12:00:57 -08:00
Steve Lee 313c8c06a1 Enable Write-Information to accept $null (#8774) 2019-01-31 13:16:34 -08:00
Steve Lee 3e8f85a682 Enable catching NotImplementedException when calling into RawUI for members that are not implemented 2019-01-28 12:13:15 -08:00
Steve Lee 3a8205018e Fix Enter-PSHostProcess test to wait until runspace is ready before attempting to enter (#8725)
This fixes CI test failure in Windows build.
2019-01-23 15:07:34 -08:00
Steve Lee 7e2cd7954f Add the experimental feature for creating 'Temp:\' drive when FileSystemProvider initializes (#8696)
Adds Experimental Feature called `PSTempDrive` that, if enabled, creates a PSDrive called `Temp:` that maps to `[System.IO.Path]::GetTempPath()`.
2019-01-23 13:53:04 -08:00
Steve Lee f7c25e8f7c Update code to use single method to check if path is UNC (#8680)
update all checks if path is unc to one method
2019-01-23 09:37:45 -08:00
Steve Lee a04f6940dd Handle case where applocker test script fails to delete (#8627)
One reported case where during applocker policy check, the test script that is created cannot be deleted because something else (malware scanner?) has a lock on the file.  This results in an exception being thrown in finally block which ultimately causes PowerShell to crash due to the unhandled exception.  Fix is to wrap the deletion in the finally block with try..catch and ignore any exceptions and leave the temp file.

TFS:20156282
2019-01-16 15:00:37 -08:00
Steve Lee c3cb6df809 Update 'CommandNotFound' fuzzy suggestion to only return unique results (#8640) 2019-01-14 14:28:15 -08:00
Steve Lee 6fa5195589 Update fuzzy test to fix daily build (#8629) 2019-01-11 16:45:49 -08:00
Steve Lee 71e58f9439 Add the experimental feature 'PSUseAbbreviationExpansion' to support tab completion on abbreviated command names (#8109) 2019-01-10 16:11:43 -08:00
Steve Lee b87cd1c0a3 Add support to show suggestions on CommandNotFound exception (#8458)
* support fuzzy matching with get-command and on CommandNotFound exception, show suggestion
* fix CodeFactor issues
* change algorithm to use Damerau-Levenshtein Distance which is more useful in finding close matches
2019-01-10 13:35:30 -08:00
Steve Lee 66c72c4366 Change Clear-Host back to using $RAWUI and clear to work over remoting (#8609) 2019-01-10 10:02:59 -08:00
Steve Lee 9793ed2c68 Change hashtable to use OrdinalIgnoreCase to be case-insensitive in all Cultures (#8566)
Ubuntu18.04 seems to default to C.UTF-8 for LANG (representing InvariantCulture) which results in a case-sensitive hashtable since CurrentCultureIgnoreCase doesn't work for that culture. Fix is to use OrdinalIgnoreCase instead.
2019-01-10 09:11:43 +05:00
Steve Lee d6000fdea8 Allow Windows users in developer mode to create symlinks without elevation (#8534) 2019-01-08 10:43:24 -08:00
Steve Lee 64fcddcb53 Help function should only pass content to pager if content was found (#8528) 2019-01-08 09:56:56 -08:00
Steve Lee 031cbf0f16 Change clear-host to simply called [console]::clear and remove clear alias from Unix (#8603)
Based on @PowerShell/powershell-committee decision, standardizing on [Console]::Clear() on all platforms and removing clear alias on non-Windows.
2019-01-08 22:38:56 +05:00
Steve Lee d51b5fdc30 help function shouldn't use pager for AliasHelpInfo (#8552) 2019-01-07 13:39:57 -08:00
Steve Lee 21fcf070fb Remove unnecessary trim of passed-in command line in interactive debugging (#8594) 2019-01-05 18:47:34 -08:00
Steve Lee 7ff5d4c681 Document First-time-issue and Hackathon/Hacktoberfest labels (#8575)
Seems like the convention is to have a `First-Time-Issue` to help first time contributors find easy issues they can work on to start learning about the project and make their first contribution.  Label is created, this PR adds documentation.  The `Hackathon`/`Hacktoberfest` label (changes depending on time of year) wasn't documented previously and added to issue management doc.

Fix https://github.com/PowerShell/PowerShell/issues/8562
2019-01-04 10:50:08 -08:00
Steve Lee 725bfdaf88 Enable install of Preview MSI release side-by-side with Stable release (#8513)
When installing (or upgrading) Preview builds the component ids for the files are the same as the installed files from the stable MSI.  MSI sees this and assumes the file is already installed so skips installing files that haven't changed (been updated) which results in missing files in the preview install folder and pwsh fails to start.  Fix is to dynamically generate new component ids (and compoentrefs) in `files.wxs` using `_Preview` suffix and use that when building a preview package.

Tested manually.

cc @bergmeister if you can help validate different scenarios.

Fix https://github.com/PowerShell/PowerShell/issues/8289
2019-01-02 12:00:43 -08:00
Steve Lee e7870278c7 Remove duplicate Open Here context menu item upgrading to newer Preview release (#8496)
Remove old `Open` regkey
2018-12-27 14:10:59 +05:00
Steve Lee 9f8d643f70 Fix mistake on deserialization (#8502)
Replace this.hideHeader with this.repeatHeader
2018-12-27 12:10:59 +05:00
Steve Lee 4af3068566 Code cleanup: Add space after closing brace where needed (#8530)
* Update TestService

* Update WebListener

* Update Controllers

* Update ExpTest

* Update MyApp

* Update Logic

* Update Logic

* Update MyApp

* Update Microsoft.Management.Infrastructure.CimCmdlets

* Update Microsoft.PowerShell.Commands.Diagnostics

* Update Microsoft.PowerShell.ScheduledJob

* Update Microsoft.WSMan.Management

* Update Microsoft.WSMan.Runtime

* Update ResGen

* Update TypeCatalogGen

* Update commands

* Update Eventing

* Update Reader

* Update utility

* Update ShowCommand

* Update trace

* Update WebCmdlet

* Update Common

* Update CoreCLR

* Update common

* Update format-object

* Update format-wide

* Update out-file

* Update out-printer

* Update out-string

* Update OutGridView

* Update LocalAccounts

* Update Commands

* Update security

* Update CoreCLR

* Update DscSupport

* Update engine

* Update help

* Update logging

* Update namespaces

* Update security

* Update utils

* Update config

* Update perfCounters

* Update tracing

* Update cmdletization

* Update other

* Update cim

* Update xml

* Update CoreCLR

* Update common

* Update DefaultFormatters

* Update out-console

* Update out-textInterface

* Update DisplayDatabase

* Update Utilities

* Update COM

* Update ComInterop

* Update CommandCompletion

* Update debugger

* Update ExperimentalFeature

* Update hostifaces

* Update interpreter

* Update lang

* Update Modules

* Update parser

* Update runtime

* Update client

* Update commands

* Update common

* Update fanin

* Update server

* Update WireDataFormat

* Update Binding

* Update Operations

* Update interface

* Update cmdletization

* Update cim

* Update management

* Update WindowsTaskbarJumpList

* Update msh
2018-12-24 11:20:06 +05:00
Steve Lee 2eb7ca8309 Fix formatting of header of table when center aligned (#8497) 2018-12-22 12:57:44 +05:00
Steve Lee 110f78b818 Add -RepeatHeader to Format-Table to enable repeating header for each screen full (#8481)
When using a screen reader or just getting the output of a table with lots of rows, the header is no longer on the screen and the columns may no longer make sense without the context.  This change adds a `-RepeatHeader` switch to `Format-Table` to enable re-outputting the header after every screen full (minus 1 row).  Expectation is that the user is piping the output to a pager (e.g. less) which uses the bottom row for pager information.  I followed the `AutoSize` parameter as the way to get the parameter from the cmdlet into the deep formatting object where it's needed.
2018-12-20 11:05:34 -08:00
Steve Lee ac2b453ba7 Enable install-powershell.ps1 to use MSI (#8418) 2018-12-11 13:58:49 -08:00
Steve Lee f17601298b Reset output attributes if column had ESC char when using Format-Table; Replace ... with unicode ellipsis (#8326)
change ellipsis when truncating to single unicode character
reset console output if previous column contains ESC
update existing format-table tests

If content included a VT100 ESC sequence (like changing color), this affected all output after that cell in the table.  Fix is to detect that a cell contained ESC and reset the console after it.  Also, change the 3 character ellipsis `...` to use the single unicode character `…` so that more text is available.

Fix https://github.com/PowerShell/PowerShell/issues/7767
2018-12-11 13:56:46 -08:00
Steve Lee 52aef57ab6 Add Enable-ExperimentalFeature and Disable-ExperimentalFeature cmdlets (#8318)
[breaking change]
Major changes are as follows:
- Add `Enable-ExperimentalFeature` and `Disable-ExperimentalFeature` cmdlets.
- Remove `-ListAvailable` from `Get-ExperimentalFeature`.
- Add `ArgumentCompleter` for `Get-ExperimentalFeature` cmdlet.
- Refactor some existing Experimental Feature tests.
- Make `ConfigScope` public and renamed `SystemWide` to `AllUsers`. Also update experimental feature code to prefer the current user config over the all user config.
2018-12-05 12:20:58 -08:00
Steve Lee 4c24f712eb Expose all cmdlets from PSDiagnostics if logman.exe is available (#8366) 2018-12-05 08:11:59 +05:00
Steve Lee b7daa796a3 Enable Open Here context menu on Windows to work with root of a drive (#8287)
support being started by Windows Shell (Open Here) where a trailing slash followed by a quote is handled incorrectly
2018-11-19 11:12:40 -08:00
Steve Lee c3143251b4 Change default issue template to use different categories (#8203)
Leverage GitHub ability to have multiple options when user clicks "New Issue" to have better issues opened and direct users to Docs repo and UserVoice for Windows PowerShell issues.
2018-11-16 10:18:13 -08:00
Steve Lee c5dd3bd2c9 Support 'Get-PSHostProcessInfo' and 'Enter-PSHostProcess' on Unix platforms (#8232)
There a some differences in support of named pipes for Windows and non-Windows.  Named pipes on Unix have a 104 character path limit.  On macOS, the `$env:TMPDIR` (on my system) is already 49 characters; corefx adds 12 more.  Since AppDomainName isn't really used, changed it from `DefaultAppDomain` to `None` to shorten the name.  Need to keep it since Windows PowerShell expects it.  Changed `starttime` part of pipe name to 8 hex characters which is to provide uniqueness to the pipe name.
2018-11-15 12:50:04 -08:00
Steve Lee 43e0394d51 Remove extra newlines from formatting which resulted in necessary double newlines (#8247) 2018-11-14 08:28:05 +05:00
Steve Lee 8eebc2699c Make each installation of pwsh has its own 'ModuleAnalysisCache' file (#8174) 2018-11-13 11:08:05 -08:00
Steve Lee 7b243d59da Remove ShouldProcess from Format-Hex (#8178) 2018-11-06 11:31:43 +05:00
Steve Lee eaa683119d Add title to Open Here window for MSI installer (#8164)
Since we don't explicitly set the window title, it just shows the path to `pwsh.exe`. Fix is to use the `-Command` parameter to set the window title.

Fix #8163
2018-11-01 13:07:45 -07:00
Steve Lee 1eec123f48 Create $PROFILE if it does not exist for -WorkingDirectory processing test (#8152) 2018-10-30 22:06:19 -07:00
Steve Lee 1aa5bb3576 Honor -OutputFormat if specified in noninteractive, redirected, encoded command used with pwsh (#8115)
[Breaking Change]

There is specific code that sets the `OutputFormat` to xml if pwsh is run non-interactive, with redirected output, and the command was encoded.  However, it ignored whether OutputFormat was specified.  Fix is to track whether `-OutputFormat` was used and respect that value rather than defaulting to xml.

Fix https://github.com/PowerShell/PowerShell/issues/5912
2018-10-29 17:51:21 -07:00
Steve Lee aa6f052d71 Update license.rtf to only have major version (#8127)
Guidance is that we can just have the major version at the top "PowerShell 6" and not worry about updating the minor version with each release.  The change is on line 230.  Word made the other changes to the RTF.
2018-10-29 15:30:04 -07:00
Steve Lee b1e2745b53 move processing of -WorkingDirectory before processing of profiles (#8079) 2018-10-29 13:56:13 -07:00
Steve Lee b27380dc51 Enable case-insensitive tab completion for files and folders on case-sensitive filesystem (#8128) 2018-10-28 09:48:49 +05:00
Steve Lee 9141b11c5e Enable Set-Location -LiteralPath to work with folders named "-" and "+" (#8089) 2018-10-24 09:37:59 +05:00
Steve Lee 082c3b0bae Enable Add-Content to share read access to other tools while writing content (#8091) 2018-10-23 16:27:53 -07:00
Steve Lee ef504e5212 Fix psmodulerestore path when built in VSCode (#8075) 2018-10-20 11:38:15 -07:00
Steve Lee 3ceb1c17ef Fix logic to not rely on build number to determine whether to output formatdata (#8063) 2018-10-19 12:45:03 -07:00
Steve Lee 2f1863a222 Update license RTF to 6.2 (#8065) 2018-10-18 14:30:51 -07:00
Steve Lee 4e5e3900f6 Allow dynamic parameter to be returned even if path matches nothing (#7957) 2018-10-18 11:44:08 -07:00
Steve Lee 81b67c924a Add prompt to the use of less in the function 'help' to instruct user how to quit (#7998) 2018-10-12 15:37:16 -07:00
Steve Lee 8bca5a6017 Allow root node of format.ps1xml to have attributes that are ignored (#7987) 2018-10-12 11:31:21 -07:00
Steve Lee b62e152f4d Improve error message on non-Windows when importing clixml with securestring (#7997) 2018-10-12 10:56:35 -07:00
Steve Lee 5b4e9a9881 Change API to match cmdlet which is more reliable in AzDevOpsPipelines Windows (#8003) 2018-10-11 15:52:12 -07:00