diff --git a/.spelling b/.spelling index 2062949056..55657c9772 100644 --- a/.spelling +++ b/.spelling @@ -783,14 +783,29 @@ tommymaynard vmsilvamolina fbehrens - CHANGELOG.md +aavdberg +azkarmoulana chucklu +Claustn +CVE-2018-8256 +CVE-2018-8415 +daviddreher2 honour +iGotenz +jeis2497052 +Jocapear +lassehastrup +markwragg +nycjan +paalbra SeeminglyScience +StingyJack +ThreeFive-O +tobvil +uninstallation +vongrippen yurko7 zhenggu -Claustn -ThreeFive-O -uninstallation - docs/debugging/README.md corehost - docs/testing-guidelines/TestRoadmap.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a76164a2e..c925e1794f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,121 @@ # Changelog +## v6.2.0-preview.2 - 2018-11-15 + +### Breaking Changes + +- Honor `-OutputFormat` if specified in non-interactive, redirected, encoded command used with `pwsh` (#8115) +- Load assembly from module base path before trying to load from the `GAC` (#8073) +- Remove tilde from Linux preview packages (#8244) +- Move processing of `-WorkingDirectory` before processing of profiles (#8079) + +### Known Issues + +- PowerShell WSMan remoting does not work on Debian 9 due to missing symbolic links. + For more information and a workaround see issue [#7598](https://github.com/PowerShell/PowerShell/issues/7598) + +### Engine Updates and Fixes + +- Enable case-insensitive tab completion for files and folders on case-sensitive filesystem (#8128) +- Experimental feature: Implicit remoting batching performance improvements (#8038) +- Add a path for checking `ZoneInformation` without throwing an exception (#8025) (Thanks @powercode!) +- Fix [CVE-2018-8256](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8256), + issues with expanding `ZIP` files with relative paths (#8252) +- Fix [CVE-2018-8415](https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8415), + issue logging when the `scriptblock` has a null character (#8253) +- Make `PSVersionInfo.PSVersion` and `PSVersionInfo.PSEdition` public (#8054) (Thanks @KirkMunro!) +- Enable distinct `ModuleAnalysisCache` files for each installation of `pwsh` (#8174) +- Consolidation of all Windows PowerShell work ported to PowerShell Core (#8257) +- Fix incorrect name check when auto-loading required modules (#8218) +- Adding verbose output for experimental implicit remoting batching feature (#8166) +- Add Type Inference for `$_ / $PSItem in catch{ }` blocks (#8020) (Thanks @vexx32!) +- Fix static method invocation type inference (#8018) (Thanks @SeeminglyScience!) + +### General Cmdlet Updates and Fixes + +- Reduce allocations in `Get-Content` cmdlet (#8103) (Thanks @iSazonov!) +- Enable `Set-Location -LiteralPath` to work with folders named `-` and `+` (#8089) +- Enable `Add-Content` to share read access with other tools while writing content (#8091) +- Add new `Offset` and `Count` parameters to `Format-Hex` and refactor the cmdlet (#7877) (Thanks @iSazonov!) +- Add `-Name`, `-NoUserOverrides` and `-ListAvailable` parameters to `Get-Culture` cmdlet (#7702) (Thanks @iSazonov!) +- Allow dynamic parameter to be returned even if path does not match any provider (#7957) +- Style fixes in `Format-Hex` (#8083) (Thanks @iSazonov!) +- Fix logic to rely on PowerShell major and minor version instead of build number to determine whether to output `formatdata` (#8063) +- Fix `Rename-Item -Path` with wildcard `char` (#7398) (Thanks @kwkam!) +- When using `Start-Transcript` and file exists, empty file rather than deleting (#8131) (Thanks @paalbra!) +- Error message enhancement for `Clear-Content` cmdlet when targeting a directory (#8134) (Thanks @kvprasoon!) +- Make `Select-String` faster by not doing extra work (#7673) (Thanks @powercode!) +- Remove `ShouldProcess` from `Format-Hex` (#8178) + +### Code Cleanup + +- Remove clone of command-line arguments array (#7910) (Thanks @iSazonov!) +- Use `DefaultPathSeparator` `char` instead of `DefaultPathSeparatorString` (#8082) (Thanks @iSazonov!) +- Replace `StringComparision.CurrentCulture` with `StringComparision.Ordinal` (#8068) (Thanks @iSazonov!) +- Fix typo in `-icontains` description from `incase sensitive` to `case insensitive` (#7840) (Thanks @StingyJack!) +- Refactor module version/`GUID` comparison logic (#7125) + +### Tools + +- Update `installpsh-amazonlinux.sh` for container specific issues (#7907) (Thanks @DarwinJS!) +- Update the `codeowners` file (#8017) + +### Tests + +- Filter the `TestPackage` artifact upload by name to avoid other `ZIP` files being uploaded (#8116) +- Adding `fxdependent` PowerShell package tests (#7830) +- Fix Windows Feature tests running in Azure DevOps (#8220) +- Create `$PROFILE` if it does not exist for `-WorkingDirectory` processing test (#8152) +- Add test coverage for additional `Get-Module` parameters (#8137) (Thanks @KevinMarquette!) +- Fix conflict with `Get-AdlStoreChildItem` from `az` module in tab completion tests (#8167) +- Fix static secret in code (#8186) + +### Build and Packaging Improvements + +- Bump `xunit.runner.visualstudio` from `2.4.0` to `2.4.1` (#8139) +- Bump `xunit` from `2.4.0` to `2.4.1` (#8140) +- Bump `Microsoft.ApplicationInsights` from `2.8.0` to `2.8.1` (#8104) +- Bump `NJsonSchema` from `9.11.1` to `9.12.1` (#8183, #8248) +- Fix `Start-PSBuild -Output` (#7504) (Thanks @kwkam!) +- Adding `YML` for Linux builds (#8168) +- Publish test package at `AGENT_WORKFOLDER` if `TEMP` is not available (#8108) +- Fix `psmodulerestore` path when built in Visual Studio Code (#8075) +- Use approved verb instead of `Generate-CrossGenAssembly` (#8151) (Thanks @kvprasoon!) +- Add path filters to CI `YAML` (#8222) +- Update `SignType` in `signing.xml` (#8223) +- Update metadata for `6.0.5` and `6.1.1` releases (#8259) +- Port changes to allow Azure DevOps NuGet feeds for Mac build (Internal 5818) +- Update version for dependencies (Internal 5822) +- Add code to use private NuGet feeds when running in internal CI system (#8187) +- Add title to `Open Here` window for `MSI` installer (#8164) +- Remove build and documentation references to `git` submodules (#8177) (Thanks @andschwa!) +- Add function to create a new `nuget.config` file (#8170) +- Update macOS release build to create the `nuget.config` (#8185) +- Workaround for accessing Azure Artifacts (#8188) +- Fix script path for `PowerShellPackageVsts.ps1` (#8189) +- `Microsoft.PowerShell.Native` now has `MUSL` binaries for Alpine. + +### Documentation and Help Content + +- Fix grammar in `README.md` (#8059) (Thanks @daviddreher2!) +- Update `powershell-beginners-guide.md` to add alias for `Clear-Host` (#7912) (Thanks @aavdberg!) +- Add Microsoft Docs link to FAQ (#8133) (Thanks @vongrippen!) +- Added updated photo of Visual Studio Code due to new version of Code (#8084) (Thanks @lassehastrup!) +- Update `license.rtf` to only have major version (#8127) +- Updated Pester Syntax in Writing Tests Guide (#8039) (Thanks @markwragg!) +- Remove duplicate parts from license file (#8143) (Thanks @azkarmoulana!) +- Fix spellings in `CHANGELOG.md` (#8062) +- Update license RTF to 6.2 (#8065) +- Combine notes about `ITuple` changes in Change Log (#8077) (Thanks @Jocapear!) +- Correct typos in `powershell-beginners-guide.md` (#8088) (Thanks @nycjan!) +- Added `Learn Windows PowerShell in a Month of Lunches` as recommended reading (#8067) (Thanks @tobvil!) +- Update `README.md` for `v6.1.1` (#8255) +- Fix some typos (#8206) (Thanks @jeis2497052!) +- Promote `HTTPS` (#8160) (Thanks @RDIL!) +- Simple grammatical correction in `README.md` file (#7978) (Thanks @iGotenz!) +- Update URLs to use `HTTPS` instead of `HTTP` in the documentation (#8165) (Thanks @RDIL!) +- Remove #7633 from `v6.2.0-preview.1` `CHANGELOG.md` updates. (#8101) (Thanks @stknohg!) + ## v6.2.0-preview.1 - 2018-10-18 ### Breaking Changes diff --git a/README.md b/README.md index a576cc0128..0676efdade 100644 --- a/README.md +++ b/README.md @@ -77,22 +77,22 @@ You can also download the PowerShell binary archives for Windows, macOS and Linu [rl-raspbian]: https://github.com/PowerShell/PowerShell/releases/download/v6.1.1/powershell-6.1.1-linux-arm32.tar.gz [rl-snap]: https://snapcraft.io/powershell -[pv-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-x64.msi -[pv-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-x86.msi -[pv-ubuntu18]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell_6.2.0-preview.1-1.ubuntu.18.04_amd64.deb -[pv-ubuntu16]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell_6.2.0-preview.1-1.ubuntu.16.04_amd64.deb -[pv-ubuntu14]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell_6.2.0-preview.1-1.ubuntu.14.04_amd64.deb -[pv-debian8]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell_6.2.0-preview.1-1.debian.8_amd64.deb -[pv-debian9]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell_6.2.0-preview.1-1.debian.9_amd64.deb -[pv-centos]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell-6.2.0-preview.1-1.rhel.7.x86_64.rpm -[pv-macos]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell-6.2.0-preview.1-osx-x64.pkg -[pv-winarm]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-arm32.zip -[pv-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-arm64.zip -[pv-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-x86.zip -[pv-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/PowerShell-6.2.0-preview.1-win-x64.zip -[pv-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell-6.2.0-preview.1-osx-x64.tar.gz -[pv-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell-6.2.0-preview.1-linux-x64.tar.gz -[pv-raspbian]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.1/powershell-6.2.0-preview.1-linux-arm32.tar.gz +[pv-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-x64.msi +[pv-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-x86.msi +[pv-ubuntu18]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell_6.2.0-preview.2-1.ubuntu.18.04_amd64.deb +[pv-ubuntu16]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell_6.2.0-preview.2-1.ubuntu.16.04_amd64.deb +[pv-ubuntu14]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell_6.2.0-preview.2-1.ubuntu.14.04_amd64.deb +[pv-debian8]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell_6.2.0-preview.2-1.debian.8_amd64.deb +[pv-debian9]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell_6.2.0-preview.2-1.debian.9_amd64.deb +[pv-centos]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell-6.2.0-preview.2-1.rhel.7.x86_64.rpm +[pv-macos]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell-6.2.0-preview.2-osx-x64.pkg +[pv-winarm]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-arm32.zip +[pv-winarm64]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-arm64.zip +[pv-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-x86.zip +[pv-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/PowerShell-6.2.0-preview.2-win-x64.zip +[pv-macos-tar]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell-6.2.0-preview.2-osx-x64.tar.gz +[pv-linux-tar]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell-6.2.0-preview.2-linux-x64.tar.gz +[pv-raspbian]: https://github.com/PowerShell/PowerShell/releases/download/v6.2.0-preview.2/powershell-6.2.0-preview.2-linux-arm32.tar.gz [pv-snap]: https://snapcraft.io/powershell-preview [in-windows]: https://docs.microsoft.com/powershell/scripting/setup/installing-powershell-core-on-windows?view=powershell-6 diff --git a/build.psm1 b/build.psm1 index 263ac1232a..b8b6eb4dc5 100644 --- a/build.psm1 +++ b/build.psm1 @@ -563,7 +563,7 @@ function Restore-PSPester [ValidateNotNullOrEmpty()] [string] $Destination = ([IO.Path]::Combine((Split-Path (Get-PSOptions -DefaultToNew).Output), "Modules")) ) - Save-Module -Name Pester -Path $Destination -Repository PSGallery -RequiredVersion "4.4.2" + Save-Module -Name Pester -Path $Destination -Repository PSGallery -RequiredVersion "4.4.1" } function Compress-TestContent { diff --git a/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj b/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj index 03243558d1..79f67a9b65 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj +++ b/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj @@ -67,7 +67,7 @@ - + diff --git a/src/System.Management.Automation/System.Management.Automation.csproj b/src/System.Management.Automation/System.Management.Automation.csproj index a4d5414d04..a0056fd4f9 100644 --- a/src/System.Management.Automation/System.Management.Automation.csproj +++ b/src/System.Management.Automation/System.Management.Automation.csproj @@ -23,7 +23,7 @@ - + diff --git a/test/hosting/hosting.tests.csproj b/test/hosting/hosting.tests.csproj index fbc26ac44e..9a92873290 100644 --- a/test/hosting/hosting.tests.csproj +++ b/test/hosting/hosting.tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/tools/metadata.json b/tools/metadata.json index 38adc09179..8018e2e9cd 100644 --- a/tools/metadata.json +++ b/tools/metadata.json @@ -1,7 +1,7 @@ { "StableReleaseTag": "v6.1.1", - "PreviewReleaseTag": "v6.2.0-preview.1", + "PreviewReleaseTag": "v6.2.0-preview.2", "ServicingReleaseTag": "v6.0.5", "ReleaseTag": "v6.1.1", - "NextReleaseTag": "v6.2.0-preview.1" + "NextReleaseTag": "v6.2.0-preview.2" } diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index be0ff24edc..f6637569fa 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -767,6 +767,7 @@ function New-UnixPackage { $ManGzipInfo = New-ManGzip -IsPreview:$IsPreview # Change permissions for packaging + Write-Log "Setting permissions..." Start-NativeExecution { find $Staging -type d | xargs chmod 755 find $Staging -type f | xargs chmod 644 @@ -779,6 +780,7 @@ function New-UnixPackage { # Add macOS powershell launcher if ($Type -eq "osxpkg") { + Write-Log "Adding macOS launch opplication..." if ($pscmdlet.ShouldProcess("Add macOS launch application")) { # Generate launcher app folder @@ -816,10 +818,12 @@ function New-UnixPackage { # Build package try { if ($pscmdlet.ShouldProcess("Create $type package")) { + Write-Log "Creating package with fpm..." $Output = Start-NativeExecution { fpm $Arguments } } } finally { if ($Environment.IsMacOS) { + Write-Log "Starting Cleanup for mac packaging..." if ($pscmdlet.ShouldProcess("Cleanup macOS launcher")) { Clear-MacOSLauncher @@ -1203,6 +1207,7 @@ function New-ManGzip $IsPreview ) + Write-Log "Creating man gz..." # run ronn to convert man page to roff $RonnFile = "$RepoRoot/assets/pwsh.1.ronn" if ($IsPreview.IsPresent) @@ -1215,7 +1220,8 @@ function New-ManGzip $RoffFile = $RonnFile -replace "\.ronn$" # Run ronn on assets file - Start-NativeExecution { ronn --roff $RonnFile } -VerboseOutputOnError + Write-Log "Creating man gz - running ronn..." + Start-NativeExecution { ronn --roff $RonnFile } if ($IsPreview.IsPresent) { @@ -1224,6 +1230,7 @@ function New-ManGzip # gzip in assets directory $GzipFile = "$RoffFile.gz" + Write-Log "Creating man gz - running gzip..." Start-NativeExecution { gzip -f $RoffFile } -VerboseOutputOnError $ManFile = Join-Path "/usr/local/share/man/man1" (Split-Path -Leaf $GzipFile) diff --git a/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 b/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 index 8023657491..5ebed79d34 100644 --- a/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 +++ b/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 @@ -29,27 +29,15 @@ param ( [switch] $Build ) -# We must build in /PowerShell -$repoRoot = '/PowerShell' -if ($BootStrap.IsPresent) { - $repoRoot = $location -} +$repoRoot = $location if ($Build.IsPresent) { - # cleanup the folder but don't delete it or the build agent will loose ownership of the folder - Write-Verbose -Message "cleaning /PowerShell" -Verbose - Get-ChildItem -Path /PowerShell/* -Attributes Hidden, Normal, Directory | Remove-Item -Recurse -Force - - # clone the repository to the location we must build from - Write-Verbose -Message "cloning to /PowerShell" -Verbose - git clone $location /PowerShell $releaseTagParam = @{} if ($ReleaseTag) { $releaseTagParam = @{ 'ReleaseTag' = $ReleaseTag } } } - Push-Location try { Write-Verbose -Message "Init..." -Verbose diff --git a/tools/releaseBuild/macOS/vsts.yml b/tools/releaseBuild/macOS/vsts.yml index 10e8c01bfb..57cdb50738 100644 --- a/tools/releaseBuild/macOS/vsts.yml +++ b/tools/releaseBuild/macOS/vsts.yml @@ -14,16 +14,6 @@ steps: scriptPath: 'tools/releaseBuild/setReleaseTag.sh' args: '-ReleaseTag $(ReleaseTagVar) -Variable "ReleaseTagVar"' displayName: 'Calculate Release Tag' -- powershell: | - Import-Module $(Build.SourcesDirectory)/build.psm1 -Force - New-NugetConfigFile -NugetFeedUrl $(AzDevOpsFeed) -UserName $(AzDevOpsFeedUserName) -ClearTextPAT $(AzDevOpsFeedPAT) -FeedName AzDevOpsFeed -Destination $(Build.SourcesDirectory)/src/Modules - - if(-not (Test-Path "$(Build.SourcesDirectory)/src/Modules/nuget.config")) - { - throw "nuget.config is not created" - } - displayName: 'Add nuget.config for AzDevOps feed for PSGallery modules ' - condition: ne(Variable['SkipFxDependent'], 'true') - task: ShellScript@2 inputs: scriptPath: 'tools/installpsh-osx.sh' @@ -32,13 +22,26 @@ steps: inputs: scriptPath: 'tools/releaseBuild/macOS/createPowerShell.sh' displayName: 'Create /PowerShell' +- powershell: | + Write-Host "##vso[task.setvariable variable=PowerShellRoot]/PowerShell" + git clone $env:BUILD_REPOSITORY_LOCALPATH /PowerShell + displayName: Clone PowerShell Repo to /PowerShell - task: ShellScript@2 inputs: scriptPath: 'tools/releaseBuild/macOS/PowerShellPackageVsts.sh' - args: '-location $(Build.SourcesDirectory) -BootStrap' + args: '-location $(PowerShellRoot) -BootStrap' displayName: 'Bootstrap VM' +- powershell: | + Import-Module $(Build.SourcesDirectory)/build.psm1 -Force + New-NugetConfigFile -NugetFeedUrl $(AzDevOpsFeed) -UserName $(AzDevOpsFeedUserName) -ClearTextPAT $(AzDevOpsFeedPAT) -FeedName AzDevOpsFeed -Destination "$(PowerShellRoot)/src/Modules" + + if(-not (Test-Path "$(PowerShellRoot)/src/Modules/nuget.config")) + { + throw "nuget.config is not created" + } + displayName: 'Add nuget.config for AzDevOps feed for PSGallery modules ' - powershell: | $env:AZDEVOPSFEEDPAT = '$(AzDevOpsFeedPAT)' - $(Build.SourcesDirectory)/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 -ReleaseTag $(ReleaseTagVar) -Destination $(System.ArtifactsDirectory) -ExtraPackage "tar" -location $(Build.SourcesDirectory) -Build + $(Build.SourcesDirectory)/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 -ReleaseTag $(ReleaseTagVar) -Destination $(System.ArtifactsDirectory) -ExtraPackage "tar" -location $(PowerShellRoot) -Build $env:AZDEVOPSFEEDPAT = $null displayName: 'Build and Package'