Мне показалось что будет интересно сравнить как эти примеры выглядели бы на PowerShell

Интересные примеры на PowerShell

Как известно PowerShell очень молодой язык, и разумеется он унаследовал множество элементов других языков, и следовательно местами схож с многими из них. Я часто слышу о коде PowerShell фразы типа “О, да они же украли PHP!”, “Это же C# с более простым синтаксисом”. Но по-моему больше всего PowerShell похож на Perl. Это и не удивительно - Perl был одним из любимых языков авторов PS, и это здорово - многим хорошим особенностям в PS мы обязанны именно Perl’у.
“Hats off to superstar Larry Wall and Perl, very few people and technologies that have had the level of (positive :-) ) impact these 2 have had on the industry. The world is a better place because that guy was born!”
Jeffrey Snover


Это была отмазка ;) Теперь перейдем к коду :)

Сразу скажу - мне кажется это просто удачная подборка попалась, многие примеры удалось записать на PS сильно короче, и главное - понятнее (субъективно конечно :) ). В очень многих областях Perl легко даст фору PowerShell’у в плане компактности кода, может быть даже и некоторые из этих примеров на Perl можно записать гораздо более красиво, так что буду рад если знающие Perl люди оставят свои конструктивные комментарии :)

Я цитирую только описания, код на Perl можно посмотреть в оригинальном посте.
1. Проверить, существует ли элемент (первый аргумент функции, передается по значению) в массиве (второй аргумент функции, передается по ссылке).

#Встроенный оператор -contains
$array -contains $element 
2. Удалить из массива @arr элементы, которые есть в массиве @skip.

#Вопросительный знак - алиас для where
$arr | ? {$skip -notcontains $_}

Вместо пункта 3 я написал красивый (субъективно разумеется ;) ) фильтр:

filter Replace-Words
{ foreach ($arg in $args) { $pair = $arg.split("=",2) #Разрезаем аргумент на 2 части по знаку $_ = $_ -replace $pair[0],$pair[1] #Заменяем вхождения в строке } $_ #Выдаём результирующую строку
}

Использовать например так:

$text = Get-Content .\test1.txt
$text | Replace-Words плохое=хорошее яблоки=груши | Set-Content .\test1.txt
4. Вывести список имен файлов и каталогов в заданной директории, отсортированный по дате последнего доступа. Обычно глобы сортируют список по имени файлов и каталогов. Для сортировки по дате последнего изменения, заменить цифру 8 на 9.

В PS для сортировки по дате изменения надо заменить не 8 на 9, а LastAccessTime на LastWriteTime ;)

ls | sort lastAccessTime
5. Удалить повторяющиеся элементы в массиве.

$arr | select -Unique
6. Перемешать элементы массива

$arr | sort {Get-Random}

Командлет Get-Random появился только в PS 2.0, в 1.0 можно сделать так:

$r = New-Object random
$arr | sort {$r.next()}
7. Выбрать случайный элемент в массиве можно как минимум двумя способами. Можно перемешать элементы, как в предыдущем примере, и выбрать нулевой, а можно в одну строчку:

$arr | Get-Random
8. Аналог PHP функции urlencode.

[System.Uri]::EscapeUriString(http://проверка)

Windows PowerShell   Теги:



Редакция портала:

Благодарим за просмотр этой информации на нашем компьютерном портале. Надеемся, что обзор Интересные примеры на PowerShell, в разделе Windows PowerShell вам понравился. Есть небольшая рекомендация, если вы хотите быть в курсе всех событий сферы информационных технологий, то рекомендуем зарегистрироваться на портале www.stfw.ru.


Живая лента

•  Смартфон Motorola P30 представлен официально - 15.08.2018: STFW.Ru: Как и ожидалось, сегодня компания Motorola на специальном мероприятии в Китае


•  Представлен смартфон OPPO F9: 6,3-дюймовый дисплей с каплеобразным вырезом, 25-Мп фронтальная камера и градиентная окраска - 15.08.2018: STFW.Ru: Компания OPPO официально представила свой новый смартфон среднего уровня OPPO


•  Первые тесты производительности SoC Snapdragon 850 для мобильных ПК Always Connected PC с ОС Windows 10 не выглядят впечатляющими - 15.08.2018: STFW.Ru: База данных тестового ПО Geekbench пополнилась результатами неизвестного


•  Опять двадцать пять: Intel рассказала о новых уязвимостях в процессорах - 15.08.2018: STFW.Ru: Компания Intel раскрыла информацию об очередном наборе уязвимостей в


•  В Киеве открыли систему общественного велопроката Nextbike. Пока доступно 100 велосипедов, в следующем году их количество обещают довести до 2000 штук - 15.08.2018: STFW.Ru: Мэр Киева Виталий Кличко принял участие в презентации и лично протестировал


•  lifecell развернул первую в Украине виртуализированную мобильную сеть NFV, которая позволит оператору быстро мигрировать на стандарт 5G - 15.08.2018: STFW.Ru: Оператор мобильной связи lifecell объявил о развертывании первой в Украине