If you want to find out the order Powershell looks for a command try using the trace-command cmdlet. For example:
PS C:\scripts> trace-command -name CommandDiscovery -command ls -PSHost
DEBUG: CommandDiscovery Information: 0 : Looking up command: ls
DEBUG: CommandDiscovery Information: 0 : Alias found: ls Get-ChildItem
DEBUG: CommandDiscovery Information: 0 : Cmdlet found: Get-ChildItem Microsoft.PowerShell.Commands.GetChildItemCommand
Directory: C:\scripts
Mode LastWriteTime Length Name
...
is nice and short, but:
PS> trace-command -name CommandDiscovery -command log -PSHost
on my system produces more than 1,000 lines of output as it searches for a non-existent log command.
The order seems to be basically expand aliases then find functions, cmdlets then search your path for the command, then do it all again with get- prepended.
The language reference is fairly terse on this, but it does say:
3.8 Name lookup It is possible to have commands of different kinds all having the same name. The order in which name lookup is performed in
such a case is alias, function, cmdlet, and external command.
If it mentions that when commands aren't found it tries again with 'get-' prepended I haven't found that bit.