diff --git a/src/System.Management.Automation/engine/CommandSearcher.cs b/src/System.Management.Automation/engine/CommandSearcher.cs index 093a2fbe993..aafdadf924d 100644 --- a/src/System.Management.Automation/engine/CommandSearcher.cs +++ b/src/System.Management.Automation/engine/CommandSearcher.cs @@ -1010,10 +1010,12 @@ private CmdletInfo GetNextCmdlet() return null; } - WildcardPattern cmdletMatcher = - WildcardPattern.Get( - PSSnapinQualifiedCommandName.ShortName, - WildcardOptions.IgnoreCase); + string moduleName = PSSnapinQualifiedCommandName?.PSSnapInName; + + var cmdletShortName = PSSnapinQualifiedCommandName?.ShortName; + WildcardPattern cmdletMatcher = cmdletShortName != null + ? WildcardPattern.Get(cmdletShortName, WildcardOptions.IgnoreCase) + : null; SessionStateInternal ss = _context.EngineSessionState; @@ -1021,13 +1023,12 @@ private CmdletInfo GetNextCmdlet() { foreach (CmdletInfo cmdlet in cmdletList) { - if (cmdletMatcher.IsMatch(cmdlet.Name) || + if (cmdletMatcher != null && + cmdletMatcher.IsMatch(cmdlet.Name) || (_commandResolutionOptions.HasFlag(SearchResolutionOptions.FuzzyMatch) && - FuzzyMatcher.IsFuzzyMatch(cmdlet.Name, _commandName))) + FuzzyMatcher.IsFuzzyMatch(cmdlet.Name, _commandName))) { - if (string.IsNullOrEmpty(PSSnapinQualifiedCommandName.PSSnapInName) || - (PSSnapinQualifiedCommandName.PSSnapInName.Equals( - cmdlet.ModuleName, StringComparison.OrdinalIgnoreCase))) + if (string.IsNullOrEmpty(moduleName) || moduleName.Equals(cmdlet.ModuleName, StringComparison.OrdinalIgnoreCase)) { // If PSSnapin is specified, make sure they match matchingCmdletInfo.Add(cmdlet);