0

I have gnuwin32 installed and appended to my environment so I run linux/unix "ls" when I type ls in the command prompt. That's not a problem for Powershell, apparently, but I'm not being able to create a custom alias, with both the same name (ls) or a differnt name (lsa/ll/ld), and I'm getting the following error:

The script failed due to call depth overflow.
+ CategoryInfo          : InvalidOperation: (0:Int32) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : CallDepthOverflow

Now, here's my Powershell script:

Set-Alias -name ls -value ListDirectory -Option AllScope

Function ListDirectory { 
    $Command = "ls -I ntuser\.* -I NTUSER\.*";
    Invoke-Expression $Command
}

Any ideas? About the ignore files, I need them. Just to make sure, this command works just fine in good old command prompt, I'm only having problems in Powershell :(

  • You are creating an infinitive loop. I'd try $Command = "ls.exe -I ntuser\.* -I NTUSER\.*"; – LotPings Jun 9 '17 at 8:56
  • Good point @LotPings, this may be the answer to my question actually!! I realized I didn't need gnuwin32 though, for now, but should I reinstall it I'll make sure to type .EXE and not just "ls" or "grep" or any other command!! Thanks hipss – prubini87 Jun 9 '17 at 19:24
0

@LotPings You were correct! Adding ".exe" to ls did "the trick". I've added a loop to grab eventual arguments I may wanna pass to it and placed the arguments within my $Command variable. I'm not sure I did this in the best way but it works! Hehe. Thanks again!

# gnuwin32 "ls"
Set-Alias -name ls -value ListDirectory -Option AllScope

Function ListDirectory {
    $allArgs = "";
    For ($i=0; $i -lt $args.Length; $i++) {
        $allArgs += $args[$i] + " ";
    }

    $Command = "ls.exe $allArgs -I ntuser\.* -I NTUSER\.*";
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.