пятница, 4 мая 2018 г.

Альясы Powershell


Открыл для себя несколько замечательных альясов. Странно даже, что я раньше их не замечал.

В скриптах часто приходится использовать“Where-Object”.

Например:
Get-ChildItem -Path D:\ -Recurse | Where-Object { $_.PSIsContainer }

Вместо “Where-Object” можно использовать “?” (знак вопроса). Вышеупомянутый скрипт в этом случае приобретает следующий вид:

Get-ChildItem -Path D:\ -Recurse | ? { $_.PSIsContainer }

Обе эти записи абсолютно идентичны.

Второй альяс – это “%” знак процента. Он используется вместоForEach-Object” и “foreach”. Следующие три строки так же будут абсолютно идентичны.

  1. Get-ChildItem -Path d:\ -Recurse | ? { $_.PSIsContainer } | ForEach-Object {$_}
  2. Get-ChildItem -Path d:\ -Recurse | ? { $_.PSIsContainer } | foreach {$_}
  3. Get-ChildItem -Path d:\ -Recurse | ? { $_.PSIsContainer } | % {$_}

Список альясов можно получить командлетом Get-Alias.

P.S.
А еще вместо логического оператора -not можно использовать оператор “!” (восклицательный знак). В этом случае две нижеследующие записи будут идентичны.

  1. Get-ChildItem -Path D:\ -Recurse | Where-Object { -not $_.PSIsContainer }
  2. Get-ChildItem -Path D:\ -Recurse | Where-Object { ! $_.PSIsContainer }
P.P.S
Немного поработав с этими альясами пришел к выводу, что если скрипт укладывается в одну строчку, то восклицательный знак и знак вопроса придают строке компактность и выглядит и воспринимается лучше. Но если скрипт большой, в много строк, то Where-Object всё же читается лучше, чем непривычные знаки. Тем более, что в разных языках программирования подобные знаки имеют разные значения и порой приходится напрягаться, чтобы вспомнить их значение в данном конкретном случае.

1 комментарий:

  1. Я то алиасами с самого начла пользуюсь, а вот про восклицательный знак упустил.

    ОтветитьУдалить