Открыл для себя несколько замечательных альясов. Странно даже, что я раньше их не замечал.
В скриптах часто приходится использовать“Where-Object”.
Например:
Get-ChildItem -Path D:\ -Recurse | Where-Object { $_.PSIsContainer }
Вместо “Where-Object” можно использовать “?” (знак вопроса).
Вышеупомянутый скрипт в этом случае приобретает следующий вид:
Get-ChildItem -Path D:\ -Recurse | ? { $_.PSIsContainer }
Обе эти записи
абсолютно идентичны.
Второй альяс – это
“%” знак процента. Он используется вместо “ForEach-Object” и “foreach”. Следующие три строки так же будут абсолютно
идентичны.
- Get-ChildItem -Path
d:\ -Recurse
| ? { $_.PSIsContainer
} | ForEach-Object
{$_}
- Get-ChildItem -Path
d:\ -Recurse
| ? { $_.PSIsContainer
} | foreach
{$_}
- Get-ChildItem -Path
d:\ -Recurse
| ? { $_.PSIsContainer
} | %
{$_}
Список альясов
можно получить командлетом Get-Alias.
А еще вместо
логического оператора -not можно
использовать оператор “!” (восклицательный знак). В этом случае две
нижеследующие записи будут идентичны.
- Get-ChildItem -Path
D:\ -Recurse
| Where-Object
{ -not $_.PSIsContainer }
- Get-ChildItem -Path D:\ -Recurse | Where-Object { ! $_.PSIsContainer }
P.P.S
Немного поработав с этими альясами пришел к выводу, что если скрипт укладывается в одну строчку, то восклицательный знак и знак вопроса придают строке компактность и выглядит и воспринимается лучше. Но если скрипт большой, в много строк, то Where-Object всё же читается лучше, чем непривычные знаки. Тем более, что в разных языках программирования подобные знаки имеют разные значения и порой приходится напрягаться, чтобы вспомнить их значение в данном конкретном случае.
Я то алиасами с самого начла пользуюсь, а вот про восклицательный знак упустил.
ОтветитьУдалить