Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1076,8 +1076,7 @@ private PSModuleInfo ImportModule_RemotelyViaPsrpSession_SinglePreimportedModule
CultureInfo.InvariantCulture,
Modules.RemoteDiscoveryFailedToGenerateProxyForRemoteModule,
remoteModuleName);
int numberOfLocallyCreatedFiles = RemoteDiscoveryHelper.InvokePowerShell(powerShell, this, errorMessageTemplate, this.CancellationToken).Count();
if (numberOfLocallyCreatedFiles == 0)
if (!RemoteDiscoveryHelper.InvokePowerShell(powerShell, this, errorMessageTemplate, this.CancellationToken).Any())
{
return null;
}
Expand Down
21 changes: 13 additions & 8 deletions src/System.Management.Automation/engine/TypeTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3290,9 +3290,14 @@ private static void AddError(ConcurrentBag<string> errors, string typeName, stri

#region add members from TypeData

private static void ProcessMembersData(ConcurrentBag<string> errors, string typeName, IEnumerable<TypeMemberData> membersData, PSMemberInfoInternalCollection<PSMemberInfo> membersCollection, bool isOverride)
private static void ProcessMembersData(
ConcurrentBag<string> errors,
string typeName,
Dictionary<string, TypeMemberData> membersData,
PSMemberInfoInternalCollection<PSMemberInfo> membersCollection,
bool isOverride)
{
foreach (TypeMemberData typeMember in membersData)
foreach (TypeMemberData typeMember in membersData.Values)
{
typeMember.Process(errors, typeName, membersCollection, isOverride);
}
Expand Down Expand Up @@ -3448,12 +3453,12 @@ internal static void ProcessMemberSetData(ConcurrentBag<string> errors, string t
private static void ProcessStandardMembers(
ConcurrentBag<string> errors,
string typeName,
IEnumerable<TypeMemberData> standardMembers,
IEnumerable<PropertySetData> propertySets,
Dictionary<string, TypeMemberData> standardMembers,
List<PropertySetData> propertySets,
PSMemberInfoInternalCollection<PSMemberInfo> membersCollection,
bool isOverride)
{
int newMemberCount = standardMembers.Count() + propertySets.Count();
int newMemberCount = standardMembers.Count + propertySets.Count;

// If StandardMembers do not exists, we follow the original logic to create the StandardMembers
if (membersCollection[PSStandardMembers] == null)
Expand Down Expand Up @@ -3678,7 +3683,7 @@ private void ProcessTypeDataToAdd(ConcurrentBag<string> errors, TypeData typeDat
string typeName = typeData.TypeName;
Dbg.Assert(!string.IsNullOrEmpty(typeName), "TypeData class guarantees the typeName is not null and not empty");

var propertySets = new Collection<PropertySetData>();
var propertySets = new List<PropertySetData>();
if (typeData.DefaultDisplayPropertySet != null)
{
propertySets.Add(typeData.DefaultDisplayPropertySet);
Expand Down Expand Up @@ -3709,7 +3714,7 @@ private void ProcessTypeDataToAdd(ConcurrentBag<string> errors, TypeData typeDat
if (typeData.Members.Count > 0)
{
typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(collectionSize));
ProcessMembersData(errors, typeName, typeData.Members.Values, typeMembers, typeData.IsOverride);
ProcessMembersData(errors, typeName, typeData.Members, typeMembers, typeData.IsOverride);

foreach (var memberName in typeData.Members.Keys)
{
Expand All @@ -3724,7 +3729,7 @@ private void ProcessTypeDataToAdd(ConcurrentBag<string> errors, TypeData typeDat
typeMembers = _extendedMembers.GetOrAdd(typeName, GetValueFactoryBasedOnInitCapacity(capacity: 1));
}

ProcessStandardMembers(errors, typeName, typeData.StandardMembers.Values, propertySets, typeMembers, typeData.IsOverride);
ProcessStandardMembers(errors, typeName, typeData.StandardMembers, propertySets, typeMembers, typeData.IsOverride);
}

if (typeData.TypeConverter != null)
Expand Down
42 changes: 23 additions & 19 deletions src/System.Management.Automation/help/HelpCommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -734,34 +734,38 @@ internal static void VerifyParameterForbiddenInRemoteRunspace(Cmdlet cmdlet, str
public static class GetHelpCodeMethods
{
/// <summary>
/// Verifies if the InitialSessionState of the current process.
/// </summary>
/// <returns></returns>
/// Checks whether the default runspace associated with the current thread has the standard Get-Help cmdlet.
/// <summary>
/// <return>True if Get-Help is found, false otherwise.</return>
private static bool DoesCurrentRunspaceIncludeCoreHelpCmdlet()
{
InitialSessionState iss =
System.Management.Automation.Runspaces.Runspace.DefaultRunspace.InitialSessionState;
if (iss != null)
{
IEnumerable<SessionStateCommandEntry> publicGetHelpEntries = iss
.Commands["Get-Help"]
.Where(entry => entry.Visibility == SessionStateEntryVisibility.Public);
if (publicGetHelpEntries.Count() != 1)
InitialSessionState iss = Runspace.DefaultRunspace.InitialSessionState;
if (iss is null)
{
return false;
}

Collection<SessionStateCommandEntry> getHelpEntries = iss.Commands["Get-Help"];
SessionStateCommandEntry getHelpEntry = null;
for (int i = 0; i < getHelpEntries.Count; ++i)
{
if (getHelpEntries[i].Visibility is not SessionStateEntryVisibility.Public)
{
return false;
continue;
}

foreach (SessionStateCommandEntry getHelpEntry in publicGetHelpEntries)
// If we have multiple entries for Get-Help,
// our assumption is that the standard Get-Help is not available.
if (getHelpEntry is not null)
{
SessionStateCmdletEntry getHelpCmdlet = getHelpEntry as SessionStateCmdletEntry;
if ((getHelpCmdlet != null) && (getHelpCmdlet.ImplementingType.Equals(typeof(GetHelpCommand))))
{
return true;
}
return false;
}

getHelpEntry = getHelpEntries[i];
}

return false;
return getHelpEntry is SessionStateCmdletEntry getHelpCmdlet
&& getHelpCmdlet.ImplementingType == typeof(GetHelpCommand);
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion test/tools/WebListener/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class Program
{
public static void Main(string[] args)
{
if (args.Count() != 7)
if (args.Length != 7)
{
System.Console.WriteLine("Required: <CertificatePath> <CertificatePassword> <HTTPPortNumber> <HTTPSPortNumberTls12> <HTTPSPortNumberTls11> <HTTPSPortNumberTls> <HTTPSPortNumberTls12>");
Environment.Exit(1);
Expand Down