4.5 KiB
Known Issues
SecureString
The SecureString
class is not the well-known C# SecureString
, as the
library is not available in .NET Core. However, PowerShell continues to use the
type for two main reasons: FullCLR compatibility, and as a specially-treated
type (that is, behavior is dependent on the type being SecureString
). Instead,
the SecureString
is Mono's completely not secure whatsoever, but open-source
and "compatible" stub that acts just like a plaintext StringBuilder
. It has
no encryption.
Additionally ReadLineSafe
is not implemented, meaning Get-Credential
fails
with PlatformNotSupportedException
.
Files excluded from the build
Microsoft.PowerShell.Commands.Management
- The file
ControlPanelItemCommand.cs
is excluded from all frameworks inMicrosoft.PowerShell.Commands.Management
because it has dependency on[Shell32.ShellFolderItem]
for FullCLR builds.
Microsoft.PowerShell.GraphicalHost
"ManagementList/CommonControls/ExpanderButtonAutomationPeer.cs",
"ManagementList/CommonControls/ExpanderButton.cs",
"ManagementList/CommonControls/ExpanderButton.Generated.cs",
"ManagementList/Common/PopupControlButton.cs",
"ManagementList/Common/PopupControlButton.Generated.cs"
Excluded because they requires UIAutomationTypes.dll
Jobs
The PowerShell jobs fail, see #1010.
xUnit
The xUnit tests can only be run on Linux.
Console Output
Performance issues have been seen in some scenarios, such as nested SSH
sessions. We believe this is likely an issue with Console.ReadKey()
and are
investigating.
Non-interactive console bugs
The ConsoleHost
is buggy when running under an environment without a proper
TTY. This is due to exceptions thrown in the RawUI
class from System.Console
that are silenced in the formatting subsystem. See issue #984.
Sessions
PowerShell sessions do not work because of remoting requirements, so
New-PSSession
etc. crash.
Aliases
The aliases that conflict with native Linux / OS X commands are removed. This is
an open discussion in issue #929. See commit 7d9f43966
for their removal,
and 3582bb421
for the merge.
Unavailable cmdlets
This project includes the CoreCLR versions of the Commands.Management
,
Commands.Utility
, Security
, and PSDiagnostics
modules.
The Archive
, Diagnostics
, PSGet
, and Host
modules are not yet included.
The WSMan.Management
module cannot be included unless the
Management.Infrastructure.Native
library is ported.
The CoreCLR version of the Commands.Utility
module does not contain the
following cmdlets that exist in the FullCLR version:
- ConvertFrom-String
- ConvertTo-Html
- Export-PSSession
- Import-PSSession
- Invoke-RestMethod
- Invoke-WebRequest
- Out-GridView
- Out-Printer
- Send-MailMessage
- Show-Command
- Update-List
File paths with literal backward slashes
On some filesystems (Linux, OS X), file paths are allowed to contain literal
backward slashes, '', as valid filename characters. These slashes, when
escaped, are not directory separators. In Bash, the backward slash is the escape
character, so a path/with/a\\slash
is two directories, path
and with
, and
one file, a\slash
. In PowerShell, we will support this using the normal
backtick escape character, so a path\with\a``\slash
or a
path/with/a``\slash
, but this edge case is currently unsupported.
That being said, native commands will work as expected. Thus this is the current scenario:
PS > Get-Content a`\slash
Get-Content : Cannot find path '/home/andrew/src/PowerShell/a/slash' because it does not exist.
At line:1 char:1
+ Get-Content a`\slash
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (/home/andrew/src/PowerShell/a/slash:String) [Get-Co
ntent], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
PS > /bin/cat a\slash
hi
The PowerShell cmdlet Get-Content
cannot yet understand the escaped backward
slash, but the path is passed literally to the native command /bin/cat
. Most
file operations are thus implicitly supported by the native commands. The
notable exception is cd
since it is not a command, but a shell built-in,
Set-Location
. So until this issue is resolved, PowerShell cannot change to a
directory whose name contains a literal backward slash.