v6.1.0-preview.4 - 2018-07-19

* Breaking Changes

- Remove the `VisualBasic` support from Add-Type (#7284)
- Update PowerShell Direct to try `pwsh` then fallback to `powershell` (#7241)
- Make pwsh able to start in a directory with wildcards in the name (#7240)
- Update `Enable-PSRemoting` so configuration name is unique for Preview releases (#7202)
- Enforce the `CompatiblePSEditions` check for modules from the legacy `System32` module path (#7183)

* Engine Updates and Fixes

- Add support to experimental features (#7242)
- Fix error when using `Get-ChildItem c:` (#7033) (Thanks @sethvs!)
- Add location history for `Set-Location` to enable `cd -` scenario (issue #2188) (#5051) (Thanks @bergmeister!)
- Fix padding for right aligned column in table formatting (#7136)
- Fix a performance regression to the `-replace` operator after adding `ScriptBlock` support (#7135)
- Fix tab expansion for `Get-Process` on macOS (#7176)
- When using PSRP, if we receive text instead of XML, output it as error to help troubleshoot (#7168)
- Fix trimming of whitespace when table is wrapped (#7184)
- Modified the `Group-Object -AsHashTable` to use the base object of `PSObject` as the key for the `Hashtable` (#7123)
- Add back ADSI and WMI type accelerators (#7085)
- Add `CompatiblePSEditions` to PowerShell Core built-in modules (#7083)
- Make `Start-Process -ArgumentList` to accept `@()` or `$null` (#6597)
- Avoid calling native APIs to check for existence of FileSystem items (#6929) (Thanks @iSazonov!)
- Add copy environment variables from `ProcessStartInfo` to key/pair array used in creating SSH process (#7070)
- Add markdown rendering feature assemblies to the trusted assembly list (#7280)
- Don't fail if `SaferPolicy` API is not available on Windows 10 IoT or NanoServer (#7075)
- Fix conditions for transcription of `Write-Information` command. (#6917) (Thanks @hubuk!)
- Fix a parsing error when `break` and `continue` are used in a switch statement in a finally block (#7273)
- Fix prompt string to be platform agnostic and keep its trailing spaces (#7255)
- Make progress panel display correctly on UNIX when the user is typing. (#6972)
- Revert change to have `SetLocation()` treat wildcarded path as literal if it exists (#7101)
- Make `Select-Object`/`ForEach-Object`/`Where-Object` see dynamic properties (#6898) (Thanks @jazzdelightsme!)
- Fix class searcher to ignore hidden properties (#7188)
- Update remote prompt when using SSH to show username if different (#7191)
- Remove `SemanticVersion` from `knowntypes` list in serialization code to enable interop between Windows PowerShell and PowerShell Core (#7016)
- Add more information to job process failure error (#7251)
- Use .Net Core `File.Delete()` method to remove symbolic links and alternate streams (#7017) (Thanks @iSazonov!)
- Enable `UseShellExecute` on all platforms (#7198)
- Methods with return type `[object]` should return `null` for an empty result (#7138)

* General Cmdlet Updates and Fixes

- Add Markdown rendering cmdlets (#6926)
- `Send-MailMessage`: Update all parameters to support `ValueFromPipelineByPropertyName`. (#6911) (Thanks @sethvs!)
- Allow Basic Auth over HTTPS (#6890)
- Add `ThreadJob` module package and tests (#7169)
- Fix Windows Event Log channel isolation semantics (#6956) (Thanks @Robo210!)
- Make `Measure-Object` handle `scriptblock` properties. (#6934)
- Added functionality to retry in `Invoke-RestMethod` and `Invoke-WebRequest`. (#5760)
- Add type inference for `Select-Object` command (#7171) (Thanks @powercode!)
- Add `-AllStats` Switch parameter for `Measure-Object` cmdlet (#7220) (Thanks @kvprasoon!)

* Code Cleanup

- Remove unneeded code that forces ARM platforms to run PowerShell in CL mode (#7046)
- Bulk update code base to put `null` on the right-hand-side of a comparison expression (#6949) (Thanks @iSazonov!)
- Remove `MapSecurityZoneWithUrlmon` method and related code (#7103)
- Cleanup: remove the unneeded type `RemotingCommandUtils` (#7029)
- Remove unneeded Windows-Full modules (#7030)
- CodeFactor code style cleanup: replace literal empty strings with `string.Empty` (#6950) (Thanks @iSazonov!)
- Remove dummy comments in Utility module files (#7224) (Thanks @iSazonov!)
- Use empty array for Functions/Cmdlets/`AliasesToExport` to follow the best practice (#7108)
- Refactor module code related to `Get-Module -ListAvailable` (#7145)
- Refactor module specification logic (#7126)

* Test

- Add tests for module specifications (#7140)
- Update test string for better clarity in `Send-MailMessage.Tests.ps1` (#7195) (Thanks @sethvs!)
- Add test to verify filesystem provider isn't used when accessing root path in `PSDrive` (#7173)
- Fix to address `ThreadJob` tests reliability and speed (#7270)
- Add additional checks for test that passes inconsistently (#7051)

* Build and Packaging Improvements

- `install-powershell.sh` filter pre-releases (when available), `params` documentation (#6849) (Thanks @DarwinJS!)
- Fedora 28 was released, Fedora 26 and 25 went end of life. (#7079) (Thanks @adelton!)
- Disambiguate icon on Windows for preview builds/installers to use `Powershell_av_colors` and
  make daily build use `Powershell_avatar` instead (#7086) (Thanks @bergmeister!)
- Update to build for Alpine (#7139)
- Update build and packaging modules for Alpine (#7149)
- Add ability to install previews side-by-side with production releases (#7194) (Thanks @DarwinJS!)
- Enable NuGet Package Registration for compliance (#7053)
- Fix the preview macOS package link (#7061)
- Remove PSReadLine from then `PowerShell.sln` file (#7137)
- Fix the file `PowerShell.sln` that was corrupted by accident (#7288)
- Fix the encoding of `PowerShell.sln` to be `utf-8` (#7289)
- Make sure all references to the Package ID for previews packages is powershell-preview (#7066)
- Update `internals.md` with the latest build changes (#7058)
- When installing using MSI, set the working directory of the shortcut to the user home directory (#7072)
- Move to dotnet core 2.1.1 (#7161) (Thanks @iSazonov!)
- Update to latest package references, runtime framework, and SDK (#7272)
- AppVeyor build matrix: more efficient build job split to reduce total time by another 5 minutes (#7021) (Thanks @bergmeister!)
- Build: Fix the source location of `PowerShell.Core.Instrumentation.dll` (#7226)
- Add Andrew to the default reviewers of the build related files (#7019)
- Build: Fix a check to avoid null argument in case `vcvarsall.bat` is absent (#7218) (Thanks @PetSerAl!)
- Update `releaseTag` in `tools/metadata.json` (#7214)
- Update `Start-PSPester` to make it more user friendly (#7210) (Thanks @bergmeister!)
- Make `Start-PSBuild -Clean` not prompt due to locked files when Visual Studio is open by excluding `sqlite3` folder and use `-x` instead of `-X` option on `git clean` (#7235) (Thanks @bergmeister!)

* Documentation and Help Content

- Fix typos in `DOCSMIGRATION.md` (#7094) (Thanks @alexandair!)
- Add instructions to update Homebrew formula for the preview version PowerShell (#7067) (Thanks @vors!)
- Merge Third Party Notices and License updates (#7203)
- Update third party notices (#7042)
- Fix Markdown and spelling errors in `CHANGELOG.md` (#7064)
- Fix `New-TemporaryFile` online help URI (#6608)
- Fix links to PowerShell install docs (#7001) (Thanks @jokajak!)
- Update links that contain `en-us` culture (#7013) (Thanks @bergmeister!)
- Update docs for `ArgumentCompleterAttribute` class (#7227) (Thanks @Meir017!)
- Fix the name of a `Register-EngineEvent` test (#7222) (Thanks @alexjordan6!)
- Update README files for native code for migration (#7248)
- Comment about dynamic members for the `DotNetAdapter`, `GetMember` and `GetMembers` (#7087)
- Update the PowerShell executable location in building guide docs (#7205) (Thanks @louistio!)
