Я установил gnuwin32 и добавил его в свою среду, поэтому я запускаю linux/unix "ls" при вводе ls в командной строке. Это не проблема для Powershell, по-видимому, но я не могу создать пользовательский псевдоним с тем же именем (ls) или другим именем (lsa/ll/ld), и я получаю следующую ошибку :

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

Теперь вот мой скрипт Powershell:

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

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

Есть идеи? Насчет игнорирования файлов они мне нужны. Просто чтобы убедиться, что эта команда прекрасно работает в старой доброй командной строке, у меня проблемы только в Powershell :(

1 ответ1

0

@LotPings Вы были правы! Добавление ".exe" в ls сделало "трюк". Я добавил цикл для получения возможных аргументов, которые я мог бы передать ему, и поместил аргументы в переменную $ Command. Я не уверен, что сделал это наилучшим образом, но это работает! Хехе. Еще раз спасибо!

# 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\.*";
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .