@@ -80,23 +80,43 @@ public CommandInfo GetCommandInfo(string commandName, CommandTypes? commandTypes
8080        /// <returns>Returns null if command does not exists</returns> 
8181        private  CommandInfo  GetCommandInfoInternal ( string  cmdName ,  CommandTypes ?  commandType ) 
8282        { 
83+             string  moduleName  =  null ; 
84+             string  actualCmdName  =  cmdName ; 
85+ 
86+             // Check if cmdName is in the format "moduleName\CmdletName" (exactly one backslash) 
87+             int  backslashIndex  =  cmdName . IndexOf ( '\\ ' ) ; 
88+             if  ( 
89+                 backslashIndex  >  0  && 
90+                 backslashIndex  ==  cmdName . LastIndexOf ( '\\ ' )  && 
91+                 backslashIndex  !=  cmdName . Length  -  1  && 
92+                 backslashIndex  !=  0 
93+             ) 
94+             { 
95+                 moduleName  =  cmdName . Substring ( 0 ,  backslashIndex ) ; 
96+                 actualCmdName  =  cmdName . Substring ( backslashIndex  +  1 ) ; 
97+             } 
8398            // 'Get-Command ?' would return % for example due to PowerShell interpreting is a single-character-wildcard search and not just the ? alias. 
8499            // For more details see https://github.com/PowerShell/PowerShell/issues/9308 
85-             cmdName  =  WildcardPattern . Escape ( cmdName ) ; 
100+             actualCmdName  =  WildcardPattern . Escape ( actualCmdName ) ; 
86101
87102            using  ( var  ps  =  System . Management . Automation . PowerShell . Create ( ) ) 
88103            { 
89104                ps . RunspacePool  =  _runspacePool ; 
90105
91106                ps . AddCommand ( "Get-Command" ) 
92-                     . AddParameter ( "Name" ,  cmdName ) 
107+                     . AddParameter ( "Name" ,  actualCmdName ) 
93108                    . AddParameter ( "ErrorAction" ,  "SilentlyContinue" ) ; 
94109
95110                if  ( commandType  !=  null ) 
96111                { 
97112                    ps . AddParameter ( "CommandType" ,  commandType ) ; 
98113                } 
99114
115+                 if  ( ! string . IsNullOrEmpty ( moduleName ) ) 
116+                 { 
117+                     ps . AddParameter ( "Module" ,  moduleName ) ; 
118+                 } 
119+ 
100120                return  ps . Invoke < CommandInfo > ( ) 
101121                    . FirstOrDefault ( ) ; 
102122            } 
0 commit comments