* Remove BOM, insert newline at EOF
* Correct case of $MyInvocation special variable
* Correct case of $OFS special variable
* Correct case of $NestedPromptLevel special variable
* Correct case of $Matches special variable
* Correct case of $LASTEXITCODE special variable
* Correct case of $StackTrace special variable
* Correct case of $args special variable
* Correct case of $this special variable
* Correct case of $input special variable
* Correct case of $PSCmdlet special variable
* Correct case of $error special variable
* Correct case of $PSDefaultParameterValues special variable
* Correct case of $PSScriptRoot special variable
* Correct case of $PWD special variable
* Correct case of $null special variable
* Correct case of $true special variable
* Correct case of $false special variable
* Correct case of $PSModuleAutoLoadingPreference special variable
* Correct case of $IsLinux special variable
* Correct case of $IsMacOS special variable
* Correct case of $IsWindows special variable
* Correct case of $IsCoreCLR special variable
* Correct case of $DebugPreference special variable
* Correct case of $VerbosePreference special variable
* Correct case of $InformationPreference special variable
* Correct case of $ExecutionContext special variable
* Correct case of $HOME special variable
* Correct case of $Host special variable
* Correct case of $PID special variable
* Correct case of $PSCulture special variable
* Correct case of $PSHOME special variable
* Correct case of $PSUICulture special variable
* Correct case of $PSVersionTable special variable
* Fix false positives
It turns out this optimization brings in a breaking change: `$MyInvocation` is different comparing to before the optimization change. I tried to fix the breaking change, but couldn't without introducing more hacky code. Given that, that PR should be reverted.
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.
Fix for #6741 Allow .exe files to be used as binary modules. Basically anywhere a .dll could be used with modules, you can now use a .exe file. Also did a little clean up, replacing constant strings with the StringLiteral values instead.
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.