Skip to content

Tags: Anhbta/PowerShell

Tags

v6.0.0-beta.1

Toggle v6.0.0-beta.1's commit message
v6.0.0-beta.1 release of PowerShellCore

Here are the major changes:

* Move to .NET Core 2.0 (.NET Standard 2.0 support)

PowerShell Core has moved to using .NET Core 2.0 so that we can leverage all the benefits of .NET Standard 2.0. (PowerShell#3556)
To learn more about .NET Standard 2.0, there's some great starter content [on Youtube](https://www.youtube.com/playlist?list=PLRAdsfhKI4OWx321A_pr-7HhRNk7wOLLY), on [the .NET blog](https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/), and [on GitHub](https://github.com/dotnet/standard/blob/master/docs/faq.md).
We'll also have more content soon in our [repository documentation](https://github.com/PowerShell/PowerShell/tree/master/docs) (which will eventually make its way to [official documentation](https://github.com/powershell/powershell-docs)).
In a nutshell, .NET Standard 2.0 allows us to have universal, portable modules between Windows PowerShell (which uses the full .NET Framework) and PowerShell Core (which uses .NET Core).
Many modules and cmdlets that didn't work in the past may now work on .NET Core, so import your favorite modules and tell us what does and doesn't work in our GitHub Issues!

* Telemetry

- For the first beta of PowerShell Core 6.0, telemetry has been to the console host to report two values (PowerShell#3620):
  - the OS platform (`$PSVersionTable.OSDescription`)
  - the exact version of PowerShell (`$PSVersionTable.GitCommitId`)

If you want to opt-out of this telemetry, simply delete `$PSHome\DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY`.
Even before the first run of Powershell, deleting this file will bypass all telemetry.
In the future, we plan on also enabling a configuration value for whatever is approved as part of [RFC0015](https://github.com/PowerShell/PowerShell-RFC/blob/master/1-Draft/RFC0015-PowerShell-StartupConfig.md).
We also plan on exposing this telemetry data (as well as whatever insights we leverage from the telemetry) in [our community dashboard](https://blogs.msdn.microsoft.com/powershell/2017/01/31/powershell-open-source-community-dashboard/).

If you have any questions or comments about our telemetry, please file an issue.

* Engine updates and fixes

- Add support for native command globbing on Unix platforms. (PowerShell#3643)
  - This means you can now use wildcards with native binaries/commands (e.g. `ls *.txt`).
- Fix PowerShell Core to find help content from `$PSHome` instead of the Windows PowerShell base directory. (PowerShell#3528)
  - This should fix issues where about_* topics couldn't be found on Unix platforms.
- Add the `OS` entry to `$PSVersionTable`. (PowerShell#3654)
- Arrange the display of `$PSVersionTable` entries in the following way: (PowerShell#3562) (Thanks to @iSazonov!)
  - `PSVersion`
  - `PSEdition`
  - alphabetical order for rest entries based on the keys
- Make PowerShell Core more resilient when being used with an account that doesn't have some key environment variables. (PowerShell#3437)
- Update PowerShell Core to accept the `-i` switch to indicate an interactive shell. (PowerShell#3558)
  - This will help when using PowerShell as a default shell on Unix platforms.
- Relax the PowerShell `SemanticVersion` constructors to not require 'minor' and 'patch' portions of a semantic version name. (PowerShell#3696)
- Improve performance to security checks when group policies are in effect for ExecutionPolicy. (PowerShell#2588) (Thanks to @powercode)
- Fix code in PowerShell to use `IntPtr(-1)` for `INVALID_HANDLE_VALUE` instead of `IntPtr.Zero`. (PowerShell#3544) (Thanks to @0xfeeddeadbeef)

* General cmdlet updates and fixes

- Change the default encoding and OEM encoding used in PowerShell Core to be compatible with Windows PowerShell. (PowerShell#3467) (Thanks to @iSazonov!)
- Fix a bug in `Import-Module` to avoid incorrect cyclic dependency detection. (PowerShell#3594)
- Fix `New-ModuleManifest` to correctly check if a URI string is well formed. (PowerShell#3631)

* Filesystem-specific updates and fixes

- Use operating system calls to determine whether two paths refer to the same file in file system operations. (PowerShell#3441)
  - This will fix issues where case-sensitive file paths were being treated as case-insensitive on Unix platforms.
- Fix `New-Item` to allow creating symbolic links to file/directory targets and even a non-existent target. (PowerShell#3509)
- Change the behavior of `Remove-Item` on a symbolic link to only removing the link itself. (PowerShell#3637)
- Use better error message when `New-Item` fails to create a symbolic link because the specified link path points to an existing item. (PowerShell#3703)
- Change `Get-ChildItem` to list the content of a link to a directory on Unix platforms. (PowerShell#3697)
- Fix `Rename-Item` to allow Unix globbing patterns in paths. (PowerShell#3661)

* Interactive fixes

- Add Hashtable tab completion for `-Property` of `Select-Object`. (PowerShell#3625) (Thanks to @powercode)
- Fix tab completion with `@{<tab>` to avoid crash in PSReadline. (PowerShell#3626) (Thanks to @powercode)
- Use `<id> - <name>` as `ToolTip` and `ListItemText` when tab completing process ID. (PowerShell#3664) (Thanks to @powercode)

* Remoting fixes

- Update PowerShell SSH remoting to handle multi-line error messages from OpenSSH client. (PowerShell#3612)
- Add `-Port` parameter to `New-PSSession` to create PowerShell SSH remote sessions on non-standard (non-22) ports. (PowerShell#3499) (Thanks to @lee303)

* API Updates

- Add the public property `ValidRootDrives` to `ValidateDriveAttribute` to make it easy to discover the attribute state via `ParameterMetadata` or `PSVariable` objects. (PowerShell#3510) (Thanks to @indented-automation!)
- Improve error messages for `ValidateCountAttribute`. (PowerShell#3656) (Thanks to @iSazonov)
- Update `ValidatePatternAttribute`, `ValidateSetAttribute` and `ValidateScriptAttribute` to allow users to more easily specify customized error messages. (PowerShell#2728) (Thanks to @powercode)

v6.0.0-alpha.18

Toggle v6.0.0-alpha.18's commit message
v6.0.0-alpha.18 release of PowerShellCore

Here are the major changes:

* Progress Bar

We made a number of fixes to the progress bar rendering and the `ProgressRecord` object that improved cmdlet performance and fixed some rendering bugs on non-Windows platforms.

- Fix a bug that caused the progress bar to drift on Unix platforms. (PowerShell#3289)
- Improve the performance of writing progress records. (PowerShell#2822) (Thanks to @iSazonov!)
- Fix the progress bar rendering on Unix platforms. (PowerShell#3362) (PowerShell#3453)
- Reuse `ProgressRecord` in Web Cmdlets to reduce the GC overhead. (PowerShell#3411) (Thanks to @iSazonov!)

* Cmdlet updates

- Use `ShellExecute` with `Start-Process`, `Invoke-Item`, and `Get-Help -Online` so that those cmdlets use standard shell associations to open a file/URI.
  This means you `Get-Help -Online` will always use your default browser, and `Start-Process`/`Invoke-Item` can open any file or path with a handler.
  (Note: there are still some problems with STA threads.) (PowerShell#3281, partially fixes PowerShell#2969)
- Add `-Extension` and `-LeafBase` switches to `Split-Path` so that you can split paths between the filename extension and the rest of the filename. (PowerShell#2721) (Thanks to @powercode!)
- Implement `Format-Hex` in C# along with some behavioral changes to multiple parameters and the pipeline. (PowerShell#3320) (Thanks to @MiaRomero!)
- Add `-NoProxy` to web cmdlets so that they ignore the system-wide proxy setting. (PowerShell#3447) (Thanks to @TheFlyingCorpse!)
- Fix `Out-Default -Transcript` to properly revert out of the `TranscribeOnly` state, so that further output can be displayed on Console. (PowerShell#3436) (Thanks to @PetSerAl!)
- Fix `Get-Help` to not return multiple instances of the same help file. (PowerShell#3410)

* Interactive fixes

- Enable argument auto-completion for `-ExcludeProperty` and `-ExpandProperty` of `Select-Object`. (PowerShell#3443) (Thanks to @iSazonov!)
- Fix a tab completion bug that prevented `Import-Module -n<tab>` from working. (PowerShell#1345)

* Cross-platform fixes

- Ignore the `-ExecutionPolicy` switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (PowerShell#3481)
- Standardize the casing of the `PSModulePath` environment variable. (PowerShell#3255)

* JEA fixes

- Fix the JEA transcription to include the endpoint configuration name in the transcript header. (PowerShell#2890)
- Fix `Get-Help` in a JEA session. (PowerShell#2988)

v6.0.0-alpha.17

Toggle v6.0.0-alpha.17's commit message
v6.0.0-alpha.17 release of PowerShellCore

Here are the major changes:

- Update PSRP client libraries for Linux and Mac.
  - We now support customer configurations for Office 365 interaction, as well as NTLM authentication for WSMan-based remoting from Linux (more information [here](https://github.com/PowerShell/psl-omi-provider/releases/tag/v1.0.0.18)). (PowerShell#3271)
- We now support remote step-in debugging for `Invoke-Command -ComputerName`. (PowerShell#3015)
- Use prettier formatter with `ConvertTo-Json` output. (PowerShell#2787) (Thanks to @kittholland!)
- Port `*-CmsMessage` and `Get-PfxCertificate` cmdlets to Powershell Core. (PowerShell#3224)
- `powershell -version` now returns version information for PowerShell Core. (PowerShell#3115)
- Add the `-TimeOut` parameter to `Test-Connection`. (PowerShell#2492)
- Add `ShouldProcess` support to `New-FileCatalog` and `Test-FileCatalog` (fixes `-WhatIf` and `-Confirm`). (PowerShell#3074) (Thanks to @iSazonov!)
- Fix `Test-ModuleManifest` to normalize paths correctly before validating.
  - This fixes some problems when using `Publish-Module` on non-Windows platforms. (PowerShell#3097)
- Remove the `AliasProperty Count` defined for `System.Array`.
  - This removes the extraneous `Count` property on some `ConvertFrom-Json` output. (PowerShell#3231) (Thanks to @PetSerAl!)
- Port `Import-PowerShellDatafile` from PowerShell script to C#. (PowerShell#2750) (Thanks to @powercode!)
- Add `-CustomMethod` paramter to web cmdlets to allow for non-standard method verbs. (PowerShell#3142) (Thanks to @lee303!)
- Fix web cmdlets to include the HTTP response in the exception when the response status code is not success. (PowerShell#3201)
- Expose a process' parent process by adding the `CodeProperty Parent` to `System.Diagnostics.Process`. (PowerShell#2850) (Thanks to @powercode!)
- Fix crash when converting a recursive array to a bool. (PowerShell#3208) (Thanks to @PetSerAl!)
- Fix casting single element array to a generic collection. (PowerShell#3170)
- Allow profile directory creation failures for Service Account scenarios. (PowerShell#3244)
- Allow Windows' reserved device names (e.g. CON, PRN, AUX, etc.) to be used on non-Windows platforms. (PowerShell#3252)
- Remove duplicate type definitions when reusing an `InitialSessionState` object to create another Runspace. (PowerShell#3141)
- Fix `PSModuleInfo.CaptureLocals` to not do `ValidateAttribute` check when capturing existing variables from the caller's scope. (PowerShell#3149)
- Fix a race bug in WSMan command plugin instance close operation. (PowerShell#3203)
- Fix a problem where newly mounted volumes aren't available to modules that have already been loaded. (PowerShell#3034)
- Remove year from PowerShell copyright banner at startup. (PowerShell#3204) (Thanks to @kwiknick!)
- Fixed spelling for the property name `BiosSerialNumber` for `Get-ComputerInfo`. (PowerShell#3167) (Thanks to @iSazonov!)

v6.0.0-alpha.16

Toggle v6.0.0-alpha.16's commit message
v6.0.0-alpha.16 release of PowerShellCore

Here are the major changes:

- Add `WindowsUBR` property to `Get-ComputerInfo` result
- Cache padding strings to speed up formatting a little
- Add alias `Path` to the `-FilePath` parameter of `Out-File`
- Fix the `-InFile` parameter of `Invoke-WebRequest`
- Add the default help content to powershell core
- Speed up `Add-Type` by crossgen'ing its dependency assemblies
- Convert `Get-FileHash` from script to C# implementation
- Fix lock contention when compiling the code to run in interpreter
- Avoid going through WinRM remoting stack when using `Get-ComputerInfo` locally
- Fix native parameter auto-completion for tokens that begin with a single Dash
- Fix parser error reporting for incompleted input to allow defining class in interactive host
- Add the `RoleCapabilityFiles` keyword for JEA support on Windows

v6.0.0-alpha.15

Toggle v6.0.0-alpha.15's commit message
v6.0.0-alpha.15 release of PowerShellCore

Here are the major changes:

- Use parens around file length for offline files
- Fix issues with the Windows console mode (terminal emulation) and native executables
- Fix error recovery with `using module`
- Report `PlatformNotSupported` on IoT for Get/Import/Export-Counter
- Add `-Group` parameter to `Get-Verb`
- Use MB instead of KB for memory columns of `Get-Process`
- Add new escape character for ESC: `` `e``
- Fix a small parsing issue with a here string
- Improve tab completion of types that use type accelerators
- `Invoke-RestMethod` improvements for non-XML non-JSON input
- PSRP remoting now works on CentOS without addition setup

v6.0.0-alpha.14

Toggle v6.0.0-alpha.14's commit message
v6.0.0-alpha.14 release of PowerShellCore

Here are the major changes:

- Moved to .NET Core 1.1
- Add Windows performance counter cmdlets to PowerShell Core
- Fix try/catch to choose the more specific exception handler
- Fix issue reloading modules that define PowerShell classes
- `Add ValidateNotNullOrEmpty` to approximately 15 parameters
- `New-TemporaryFile` and `New-Guid` rewritten in C#
- Enable client side PSRP on non-Windows platforms
- `Split-Path` now works with UNC roots
- Implicitly convert value assigned to XML property to string
- Updates to `Invoke-Command` parameters when using SSH remoting transport
- Fix `Invoke-WebRequest` with non-text responses on non-Windows platforms
- `Write-Progress` performance improvement from `alpha13` reverted because it introduced crash with a race condition

v6.0.0-alpha.13

Toggle v6.0.0-alpha.13's commit message
v6.0.0-alpha.13 release of PowerShell Core

With 99 non-merge commits since v6.0.0-alpha.12, here are the major changes:

1. Fix NullReferenceException in binder after turning on constrained language mode
2. Enable Invoke-WebRequest and Invoke-RestMethod to not validate the HTTPS certificate of the server if required.
3. Enable binder debug logging in PowerShell Core
4. Add parameters '-Top' and '-Bottom' to Sort-Object or Top/Bottom N sort
5. Enable Update-Help and Save-Help on Unix platforms
6. Update the formatter for 'System.Diagnostics.Process' to not show the 'Handles' column
7. Improve Write-Progress performance by adding timer to update a progress pane every 100 ms
8. Enable correct table width calculations with ANSI escape sequences on Unix
9. Fix background jobs for Unix and Windows
10. Add Get-Uptime to Microsoft.PowerShell.Utility
11. Make Out-Null as fast as '> $null'
12. Add Dockerfile for windowsservercore and NanoServer
13. Fix WebRequest failure to handle missing ContentType in response header
14. Make Write-Host fast by delay initializing some properties in InformationRecord
15. Ensure PowerShell Core adds an initial '/' rooted drive on Unix platforms
16. Enable streaming behavior for native command execution in pipeline, so that 'ping | grep' doesn't block
17. Make Write-Information accept objects from pipeline
18. Fixes deprecated syscall issue on macOS 10.12
19. Fix code errors found by the static analysis using PVS-Studio
20. Add support to W3C Extended Log File Format in Import-Csv
21. Guard against ReflectionTypeLoadException in type name auto-completion
22. Update build scripts to support win7-x86 runtime
23. Move PackageManagement code/test to oneget.org

v6.0.0-alpha.12

Toggle v6.0.0-alpha.12's commit message
v6.0.0-alpha.12 release of PowerShell Core

With 72 non-merge commits since v6.0.0-alpha.11, here are the major changes:

1. Fix Get-ChildItem -Recurse -ErrorAction Ignore to ignore additional errors
2. Don't block pipeline when running Windows exes
3. Fix for PowerShell SSH remoting with recent Win32-OpenSSH change.
4. Select-Object with -ExcludeProperty now implies -Property * if -Property is not specified.
5. Adding ValidateNotNullOrEmpty to -Name parameter of Get-Alias
6. Enable Implicit remoting commands in PowerShell Core
7. Fix GetParentProcess() to replace an expensive WMI query with Win32 API calls
8. Fix Set-Content failure to create a file in PSDrive under certain conditions.
9. Adding ValidateNotNullOrEmpty to -Name parameter of Get-Service
10. Adding support <Suppress> in Get-WinEvent -FilterHashtable
11. Adding WindowsVersion to Get-ComputerInfo
12. Remove the unnecessary use of lock in PseudoParameterBinder to avoid deadlock
13. Refactor Get-WinEvent to use StringBuilder for XPath query construction
14. Clean up and fix error handling of libpsl-native
15. Exclude Registry and Certificate providers from UNIX PS
16. Update PowerShell Core to consume DotNet Core preview1-24530-04

v6.0.0-alpha.11

Toggle v6.0.0-alpha.11's commit message
v6.0.0-alpha.11 release of PowerShell

With 108 non-merge commits since v6.0.0-alpha.10,
here are the major changes:

- Add '-Title' to 'Get-Credential' and unify the prompt experience
- Update dependency list for PowerShell Core on Linux and OS X
- Fix 'powershell -Command -' to not hang and to not ignore the last command
- Fix binary operator tab completion
- Enable 'ConvertTo-Html' in PowerShell Core
- Remove most Maximum* capacity variables
- Fix 'Get-ChildItem -Hidden' to work on system hidden files on Windows
- Fix 'JsonConfigFileAccessor' to handle corrupted 'PowerShellProperties.json'
and defer creating the user setting directory until a write request comes
- Fix variable assignment to not overwrite readonly variables
- Fix 'Get-WinEvent -FilterHashtable' to work with named fields in UserData of event logs
- Fix 'Get-Help -Online' in PowerShell Core on Windows
- Spelling/grammar fixes

v6.0.0-alpha.10

Toggle v6.0.0-alpha.10's commit message
v6.0.0-alpha.10 release of PowerShell

With 311 non-merge commits since v6.0.0-alpha.9,
here are the major changes:

- Fix passing escaped double quoted spaces to native executables
- Add Dockerfiles to build each Linux distribution
- `~/.config/PowerShell` capitalization bug fixed
- Fix crash on Windows 7
- Fix remote debugging on Windows client
- Fix multi-line input with redirected stdin
- Add PowerShell to `/etc/shells` on installation
- Fix `Install-Module` version comparison bug
- Spelling fixes