Fix issue #1609 - Get-PSSession -computername fails on nano

Root cause: Microsoft.WSMan.Management  and  Microsoft.PowerShell.Commands.Diagnostics  are not put in the default snapin list for win-ops, and thus when a runspace is created using RunspaceConfiguration, those 2 are not loaded as snapins by default, which is a behavior change compared to Nano PS.
Fix: Replace the guard 'PORTABLE' to be 'UNIX' so that they are in the default snapin list when targeting windows platform.
This commit is contained in:
Dongbo Wang 2016-08-05 11:19:32 -07:00
parent 70aea51cb1
commit dc9b326587
2 changed files with 11 additions and 2 deletions

View file

@ -1284,7 +1284,7 @@ namespace System.Management.Automation
{
s_defaultMshSnapins = new List<DefaultPSSnapInInformation>()
{
#if !PORTABLE // Microsoft.PowerShell.Commands.Diagnostics.dll needs to be ported
#if !UNIX
new DefaultPSSnapInInformation("Microsoft.PowerShell.Diagnostics", "Microsoft.PowerShell.Commands.Diagnostics", null,
"GetEventResources,Description", "GetEventResources,Vendor"),
#endif
@ -1303,7 +1303,7 @@ namespace System.Management.Automation
"SecurityMshSnapInResources,Description","SecurityMshSnapInResources,Vendor")
};
#if !PORTABLE
#if !UNIX
if (!Utils.IsWinPEHost())
{
s_defaultMshSnapins.Add(new DefaultPSSnapInInformation("Microsoft.WSMan.Management", "Microsoft.WSMan.Management", null,

View file

@ -3,5 +3,14 @@ Describe 'Basic engine APIs' -Tags "CI" {
It 'can create default instance' {
[powershell]::Create() | Should Not Be $null
}
It "can load the default snapin 'Microsoft.WSMan.Management'" -skip:(-not $IsWindows) {
$ps = [powershell]::Create()
$ps.AddScript("Get-Command -Name Test-WSMan") > $null
$result = $ps.Invoke()
$result.Count | Should Be 1
$result[0].PSSnapIn.Name | Should Be "Microsoft.WSMan.Management"
}
}
}