Comments 70
> PowerShell ничем не хуже обычного cmd.exe
вы пропустили wmic? ;)
вы пропустили wmic? ;)
+1
лучше бы bash переписали для винды
-10
По возможностям PowerShell не уступает Bash.
+2
ну так давно уже пора нормальный cli для винды написать.
-8
Правда, это Вы на сайте МС прочли?
+4
Тоже почему-то именно так и подумал…
Вообще, насколько я понял, лет через 10 в каком-нибудь очередном релизе Форточек все-таки отделят всю графическую подсистему от ядра оси. И настанет в Форточках эпоха X-Серверов.
Ну и так далее… Монолитное ядро… Кастомные Окружения рабочего стола… Everything is a file… До открытия исходников под GPL отсюда совсем недалеко. Кто там, говорите, победит в итоге? ^_^
Вообще, насколько я понял, лет через 10 в каком-нибудь очередном релизе Форточек все-таки отделят всю графическую подсистему от ядра оси. И настанет в Форточках эпоха X-Серверов.
Ну и так далее… Монолитное ядро… Кастомные Окружения рабочего стола… Everything is a file… До открытия исходников под GPL отсюда совсем недалеко. Кто там, говорите, победит в итоге? ^_^
-1
В виндовс сервер 2008 уже отделили гуй от ядра, на сервер можно поставить сисему без окошек
+5
Победит то, что окажется удобнее конечному потребителю. Windows-way не предполагает настройку кастомных DE пользователем, также как и раскрытие исходников под GPL.
И да, вы не поверите — про PowerShell я на самом деле прочел на сайте Майкрософт. А еще там же я скачал документацию и примеры в огромном количестве, посмотрите только на script Repository.
И да, вы не поверите — про PowerShell я на самом деле прочел на сайте Майкрософт. А еще там же я скачал документацию и примеры в огромном количестве, посмотрите только на script Repository.
+1
PowerShell использует .net, а .net в свою очередь не уступает Bash
0
«Ламборгини» выпускает спортивные машины. Все это знают и это как бы синоним спорткаров. Но вот незадача, они еще выпускали тракторы и джипы (военные). И вроде в общем контексте, если человек будет говорить о «Ламборгини» как о спорткарах, он особо не ошибется. Но если же обсуждать конкретно марку, то упущение факта производства других типов машин будет грубостью.
Вот такая вот метафора. «Ламборгини» — шелл, джип — ПовреШелл, а „Кунташ“, например, — Баш. Да, вы правы, у тех и других есть колеса, двигатель, трансмиссия. Но вот они совсем не похожи и для разных целей используются.
За ПоверШеллом я слежу с начала 2006 года, он сразу привлек мое внимание, но вот незадача, он хорошо для автоматизации и разового использования, ну неудобен он мне и все. С башем я породнился в первую же минуту. И в реальных условиях баш+перл+крон для меня намного приятнее. Ну конечно, портировать Баш под вин архитектуру, как предлагают ниже, это полный маразм.
Вот такая вот метафора. «Ламборгини» — шелл, джип — ПовреШелл, а „Кунташ“, например, — Баш. Да, вы правы, у тех и других есть колеса, двигатель, трансмиссия. Но вот они совсем не похожи и для разных целей используются.
За ПоверШеллом я слежу с начала 2006 года, он сразу привлек мое внимание, но вот незадача, он хорошо для автоматизации и разового использования, ну неудобен он мне и все. С башем я породнился в первую же минуту. И в реальных условиях баш+перл+крон для меня намного приятнее. Ну конечно, портировать Баш под вин архитектуру, как предлагают ниже, это полный маразм.
0
метафора конечно ничего так, но есть одно НО: «ну неудобен он мне и все».
это но перечеркивает весь смысл Вашей метафоры
это но перечеркивает весь смысл Вашей метафоры
0
«Я» — это обычный пользователь, которому не тепло, не холодно от возможностей ПоверШела, а от моему другу админу-розрабу, который не шарит С# это идеальное решение. Это дополнение к метафоре =)
0
а че ему влом выучить if… then… while? у баша тоже такие есть, никто ведь не заставляет учить все десятки тысяч классов.нет, базовый функционал аналогичен башу, но если захочется чего-то помощней, вместо перла или питона.нет пойдет отличненько
0
Если я не ошибаюсь then'a там нету (в ПШ и в Си-подобных языках) ибо синтаксис его не требует, не паскаль же, а if есть в command.com времен доса 6.0, посмотрите пожалуйста.
Ну while, это прямо долгожданный прорыв, а про foreach, — пиковое достижение виншелов, я уже молчу =) Дот НЕТ не переносим в отличии от того же Питона и Перла (который уже, давно, кстати, ООП) и сложнее (опять же, субьективно).
Если быть откровенным, то тут дело не в тупости программных архитекторов МС или программеров, а в самой глобальной модели ОС, — ну не смогут они отточить функционал шела до уровня никсовых за 5 лет, нереально это, у них разница в развитии более 30 лет, опять же я бы мог приводить примеры с автопромышленностью, все дается опытом и постоянным оттачивание. А если еще учесть и то, что МС достаточно вяло воспринимает пожелание пользователей, то тут картина не очень, еще долго им работать в плане удобства.
Ну while, это прямо долгожданный прорыв, а про foreach, — пиковое достижение виншелов, я уже молчу =) Дот НЕТ не переносим в отличии от того же Питона и Перла (который уже, давно, кстати, ООП) и сложнее (опять же, субьективно).
Если быть откровенным, то тут дело не в тупости программных архитекторов МС или программеров, а в самой глобальной модели ОС, — ну не смогут они отточить функционал шела до уровня никсовых за 5 лет, нереально это, у них разница в развитии более 30 лет, опять же я бы мог приводить примеры с автопромышленностью, все дается опытом и постоянным оттачивание. А если еще учесть и то, что МС достаточно вяло воспринимает пожелание пользователей, то тут картина не очень, еще долго им работать в плане удобства.
0
if… then… while — читай как базовые возможности
ооп уже как бы не время хвастаться, непонял к чему это было
.нет очень даже переносим (моно — яркий пример)
а чем же функционал баша лучше функционала повер шелла? (это не ирония, я на самом деле хочу знать)
ооп уже как бы не время хвастаться, непонял к чему это было
.нет очень даже переносим (моно — яркий пример)
а чем же функционал баша лучше функционала повер шелла? (это не ирония, я на самом деле хочу знать)
0
Зря вы считаете, что не время хвастаться, если почитаете зарубежные статьи посвященные ПШ, то основным преимуществом называется его ООП'шность.
Ни видел не одного яркого, нет… не яркого, а реального и нужного примера такого работающего переноса, ай да… еще ж WinAPI, хотя в последнее время МС все больше рекомендует воздержатся от его непосредственного использования, приукрашивая это недолугими примерами из библиотеки дот нет, а внизу пишет примечания, что мол эти примеры для ознакомления и МС ни за что не отвечает, в случае их применения в реальном коде :)))
Функциональность лучше тем, что за ним можно и приятно работать, он у меня всегда открыт и я постоянно ним пользуюсь, вот сомневаюсь, что и ЦМД, и ПШ также украшают стол вин-программера или на худой конец админа. Я за полчаса могу написать программу для работы с сетью используя стандартный набор программ (которые все изначально работают в консоли и поддерживают контейнеры), парсить их вывод скриптом на перле, и им же ними управлять. Мой друг админ под вин, потратит на это же вчетверо больше времени, половина которого уйдет на бессмысленную отладку работы сокетов…
Если вы не работаете в никсе, мне бесполезно вам объяснять. Это надо просто почувствовать.
Ни видел не одного яркого, нет… не яркого, а реального и нужного примера такого работающего переноса, ай да… еще ж WinAPI, хотя в последнее время МС все больше рекомендует воздержатся от его непосредственного использования, приукрашивая это недолугими примерами из библиотеки дот нет, а внизу пишет примечания, что мол эти примеры для ознакомления и МС ни за что не отвечает, в случае их применения в реальном коде :)))
Функциональность лучше тем, что за ним можно и приятно работать, он у меня всегда открыт и я постоянно ним пользуюсь, вот сомневаюсь, что и ЦМД, и ПШ также украшают стол вин-программера или на худой конец админа. Я за полчаса могу написать программу для работы с сетью используя стандартный набор программ (которые все изначально работают в консоли и поддерживают контейнеры), парсить их вывод скриптом на перле, и им же ними управлять. Мой друг админ под вин, потратит на это же вчетверо больше времени, половина которого уйдет на бессмысленную отладку работы сокетов…
Если вы не работаете в никсе, мне бесполезно вам объяснять. Это надо просто почувствовать.
0
тоесть преимущество баша в «стандартный набор программ (которые все изначально работают в консоли и поддерживают контейнеры)» а вместо самого баша можно использовать все что угодно получается… зачем тогда меряться пиписьками если в итоге рулит набор утилит?
0
Почему это было бы лучшим решением, на ваш взгляд?
Мне кажется, что концепция PowerShell выгодно отличается от basha хотя бы тем, что она — новое изобретение, а не ремикс давно известных. Кстати, имхо, на bash'e было бы сложно сделать некоторые вещи из тех, о которых написано в упомянутой книге.
Мне кажется, что концепция PowerShell выгодно отличается от basha хотя бы тем, что она — новое изобретение, а не ремикс давно известных. Кстати, имхо, на bash'e было бы сложно сделать некоторые вещи из тех, о которых написано в упомянутой книге.
+1
power shell не новое изобретение. а просто концепцию стандартного шела для никсов переврали для микрософта. то что было бы сложно для вас на баше наверняка не сложно для тех кто баш знает.
-9
В Вашем случае советую запустить PowerShell в виртуальной машине и наконец-таки его попробовать.
+4
ну, может быть, вы и правы, с башем я не работал, но слышал отзывы.
однако, мне все-таки кажется, что с объектной моделью работать удобнее, нежели с текстом. во всяком случае, олдскульные методы не теряют актуальности (т.к. ToString всегда в кармане :) ).
однако, мне все-таки кажется, что с объектной моделью работать удобнее, нежели с текстом. во всяком случае, олдскульные методы не теряют актуальности (т.к. ToString всегда в кармане :) ).
+1
Когда это оно оказалось новым-то? О_о Хотя таки да… Для заядлых форточников это новая, революционная и инновационная технология администрировани и взпимодействия с тем, что он таки администрирует… Высший пилотаж просто. Это же надо — Windows-сервер рулить в консоли и при этом — все работает! Нет, определенно для этого нужно еще 5 сертификатов получить у Microsoft и еще пару на Brainbench и еще пару у независимых аттестаторов…
-4
Почему именно bash? Мало что ли других оболочек в тех же*nix системах?
Может потому что вы привыкли именно к bash? Цель PowerShell не в пользовательской оболочке, удобной линуксоидам. PowerShell — это новые возможности, требующие новый синтаксис.
Это не просто оболочка, это среда полностью интегрированная с CLR, с которой можно работать как на уровне командной строки, так и программном, на уровне объектов .Net.
Все это позволяет очень упросить скриптовое администрирование, манипулируя объектами, а не строками.
А для использования в качестве файлового менеджера PowerShell поддерживает привычный синтаксис как из cmd, так и большинство привычных nix-комманд.
Может потому что вы привыкли именно к bash? Цель PowerShell не в пользовательской оболочке, удобной линуксоидам. PowerShell — это новые возможности, требующие новый синтаксис.
Это не просто оболочка, это среда полностью интегрированная с CLR, с которой можно работать как на уровне командной строки, так и программном, на уровне объектов .Net.
Все это позволяет очень упросить скриптовое администрирование, манипулируя объектами, а не строками.
А для использования в качестве файлового менеджера PowerShell поддерживает привычный синтаксис как из cmd, так и большинство привычных nix-комманд.
+9
он уже давно портирован и успешно применяется
sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963
sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963
0
А в винде есть подобие openssh?
+1
Сам пока PS толком не копал, но примеры работы с .NET (на примере SharePoint) очень впечатлили
+3
C точки зрения разработчика (не админа) — так себе.
Базовые фичи недоделаны (у меня в csv нет заголовков — значит надо ждать PowerShell 2 или писать парсинг с нуля).
Переусложнённая разница между объектами и хешами.
Производительность вызова .NET методов ужасна.
Хотел сделать импорт из файла в миллион строк — 70% времени ушло на Method.Invoke, и это при том что я указал фиксированный метод.
Но написать несложный one-liner, особенно использующий реестр — вот это приятно и удобно.
Если кратко, для тех вещей, для которых есть провайдеры (реестр, sharepoint, AD) — удобно.
Но шаг влево/вправо часто приводит к огромным и переусложнённым скриптам.
Базовые фичи недоделаны (у меня в csv нет заголовков — значит надо ждать PowerShell 2 или писать парсинг с нуля).
Переусложнённая разница между объектами и хешами.
Производительность вызова .NET методов ужасна.
Хотел сделать импорт из файла в миллион строк — 70% времени ушло на Method.Invoke, и это при том что я указал фиксированный метод.
Но написать несложный one-liner, особенно использующий реестр — вот это приятно и удобно.
Если кратко, для тех вещей, для которых есть провайдеры (реестр, sharepoint, AD) — удобно.
Но шаг влево/вправо часто приводит к огромным и переусложнённым скриптам.
+1
>(у меня в csv нет заголовков — значит надо ждать PowerShell 2 или писать парсинг с нуля
Заголовки можно передать как параметр ipcsv
Заголовки можно передать как параметр ipcsv
0
В какой версии PowerShell?
Если я правильно понимаю, PowerShell 2.0 есть только в виде CTP, а 1.0 этого не понимает.
Если я правильно понимаю, PowerShell 2.0 есть только в виде CTP, а 1.0 этого не понимает.
0
в 2.0 CTP 3 — вполне пригоден к использованию. Что в 1.0 — не знаю
0
Верю.
Но насколько я помню PowerShell не поддерживает две инсталляции одновременно (1.0 и 2.0), а у меня не было желания на сервере заказчика заменять стабильную версию чего-либо на CTP, если в этом не было жизненной необходимости.
Вот если бы import-csv умел работать построчно (выдавая массив или что-нибудь там) — проблемы бы с самого начала не было.
Но насколько я помню PowerShell не поддерживает две инсталляции одновременно (1.0 и 2.0), а у меня не было желания на сервере заказчика заменять стабильную версию чего-либо на CTP, если в этом не было жизненной необходимости.
Вот если бы import-csv умел работать построчно (выдавая массив или что-нибудь там) — проблемы бы с самого начала не было.
+1
Если кратко, для тех вещей, для которых есть провайдеры (реестр, sharepoint, AD) — удобно.
Но шаг влево/вправо часто приводит к огромным и переусложнённым скриптам.
Хотелось бы пример и сравнительный код на баше
Но шаг влево/вправо часто приводит к огромным и переусложнённым скриптам.
Хотелось бы пример и сравнительный код на баше
0
Я не пишу на баше, потому что я
a. не админю линукс
б. знаю перл
Легко поверю что это проблема всех скриптовых языков, более того, поверю что PowerShell выигрывает у баша.
Тем не менее перлу на мой взгляд он проигрывает в понятности (если не считать тех вещей для которых есть провайдеры, но это я уже сказал).
Пример сложного скрипта так сходу не приведу, ну пример шага влево с тем же csv (не мой):
get-content file.csv|select-object @{e={$_.split(',')[0]};n='Country'},@{e={$_.split(',')[1]};n='Points'}
это если не нужны хедеры, и это ведь ещё неправильный код — он подавится на заэскейпленых символах.
Скрипт импорта (из-за производительности) я в итоге написал на boo (http://boo.codehaus.org/) и не жалею.
a. не админю линукс
б. знаю перл
Легко поверю что это проблема всех скриптовых языков, более того, поверю что PowerShell выигрывает у баша.
Тем не менее перлу на мой взгляд он проигрывает в понятности (если не считать тех вещей для которых есть провайдеры, но это я уже сказал).
Пример сложного скрипта так сходу не приведу, ну пример шага влево с тем же csv (не мой):
get-content file.csv|select-object @{e={$_.split(',')[0]};n='Country'},@{e={$_.split(',')[1]};n='Points'}
это если не нужны хедеры, и это ведь ещё неправильный код — он подавится на заэскейпленых символах.
Скрипт импорта (из-за производительности) я в итоге написал на boo (http://boo.codehaus.org/) и не жалею.
+1
Каким образом на boo вы обошли отсутствия корретного парсинга CSV?
0
Положил рядом вот эту библитеку (http://www.codeproject.com/KB/database/CsvReader.aspx).
Сделал import LumenWorks.Framework.IO.Csv from 'LumenWorks.Framework.IO' (если не путаю по памяти).
Дальше просто. Кстати и импорт таким образом гораздо проще чем стандартное LoadAssembly в PS.
Сделал import LumenWorks.Framework.IO.Csv from 'LumenWorks.Framework.IO' (если не путаю по памяти).
Дальше просто. Кстати и импорт таким образом гораздо проще чем стандартное LoadAssembly в PS.
0
Кстати можно упростить:
Вынести повторяющийся split отдельно
Ужасные хешы можно поробовать сконвертировать в объекты по другому:
powershell.com/cs/blogs/tips/archive/2008/11/14/converting-hash-tables-to-objects.aspx
Вынести повторяющийся split отдельно
gc file.csv | %{ $_.split(',') } | select @{e={$_.[0]};n='Country'},@{e={$_.[1]};n='Points'}
Ужасные хешы можно поробовать сконвертировать в объекты по другому:
powershell.com/cs/blogs/tips/archive/2008/11/14/converting-hash-tables-to-objects.aspx
0
Другой пример шага влево — out-excel. Пример функции, который можно найти в инете, не работает с определённым сочетанием региональных настроек Экселя (уже забыл в чём там конкретно дело). Теоретически это лечится выставлением культуры, но выставление культуры стандартным образом через currentthread не работает в powershell, по неизвестным причинам.
0
— PowerShell ничем не хуже обычного cmd.exe
Тормознее, больше жрет памяти, меньше инсталляционная база — за удобствор надо платить
— Не очень понравился процесс ввода длинных команд и их редактирования (в случае, если они многострочные)о
в ISE вроде нормально — перехотд на следующую строчку Shift + Enter. Если хочется большего — набрать в верхнем окне редактора ISE и запустить.
Тормознее, больше жрет памяти, меньше инсталляционная база — за удобствор надо платить
— Не очень понравился процесс ввода длинных команд и их редактирования (в случае, если они многострочные)о
в ISE вроде нормально — перехотд на следующую строчку Shift + Enter. Если хочется большего — набрать в верхнем окне редактора ISE и запустить.
+2
— мне не нравится то, что нужно предварять имя любой переменной знаком $ или $_ в случае обращения к переданному объекту. Но, считаю, что к этим неудобствам вполне несложно привыкнуть, зато в коде сразу видны переменные + минимизируется число телодвижений.
Как бы вы отличали переменные от строчек, если бы они не отделялись символом $. В cmd было аж два знака %name%
Что бы значило gc test — получить содерджимое файла test или получить содержимое файла с именем лежащим в переменной test?
Как бы вы отличали переменные от строчек, если бы они не отделялись символом $. В cmd было аж два знака %name%
Что бы значило gc test — получить содерджимое файла test или получить содержимое файла с именем лежащим в переменной test?
+1
Я не совсем понимаю, чем это лучше, к примеру, питона?
+5
Как минимум, это удобно для тех, кто знаком со средой .NET — привычные инструменты из команд-лайновой оболочки.
+2
z1. тем чем шелл лучше языка программирования — предназначен для работы с файлами и решения сиюминутных задач. Попробуйте на питон перевести
вывести все файлы с атрибутом 'read only' из c:\windows и подпапок
или
Вывести в табличку все вервисы в название которых входит SQL и скгруппировать по статусу
2. Тем, что поддерживается MS в своих продуктах — напр Exchange, SQL server
ls c:\windows -rec -fil *.dll | ?{ $_.IsReadOnly }
вывести все файлы с атрибутом 'read only' из c:\windows и подпапок
или
gsv *sql* | ft -group status
Вывести в табличку все вервисы в название которых входит SQL и скгруппировать по статусу
2. Тем, что поддерживается MS в своих продуктах — напр Exchange, SQL server
+1
Прелесть PS в том, что он работает с объектами — .NET, COM. Соотвественно с этими объектами можно вытворять все что угодно. Вся функциональность .NET-framework'а у вас в консоле и скриптах.
Давно надо было заменить cmd на PS, еще с момента появления .NET.
Давно надо было заменить cmd на PS, еще с момента появления .NET.
+2
сам три дня назад начал учить power shell. могу порекоммендовать ресурс windowspowershell.ru и локализированную документацию www.microsoft.com/downloads/details.aspx?FamilyID=B4720B00-9A66-430F-BD56-EC48BFCA154F&displaylang=en (переведены userGuide и gettingStarted)
+1
Ну это смешно. В с 95 года по 2003 на весь Божий свет громогласно заявлялось, что CLI — дела давно минувших дней, страсть юниксовых зубров и прочих отморозков. Теперь же вдруг оказалось, что вот, мол, есть необыкновенная, новая, божественная технология скриптования…
Вот почему-то кажется, что всякие там *sh переживут powershell.
Вот почему-то кажется, что всякие там *sh переживут powershell.
+2
Для обычных пользователей (не сисадминов и не разработчиков) GUI действительно предпочтительнее CLI в подавляющем большинстве случаев. Поэтому, в такого рода заявлениях нет ничего удивительного. Все равно бухгалтерам в сто раз удобнее работать с помощью несложных тыкательных интерфейсов, нежели соображать, какую команду ввести в консоль. А для специализированных задач CLI необходим как намного более гибкий (а вместе с тем, и сложный) инструмент. И, мне кажется, что здесь нет никакого противоречия.
0
противоречие заключается в том, что Microsoft занимается не только домашними и офисными системами, не так ли? В серии NT тоже ведь продвигалась новая парадигма управления компьютером, и тоже не было приличного родного CLI-интерфейса. Ин-ту-и-тив-на-я, как соска для младенцев.
0
Несложные операции администрирования тоже неплохо заворачиваются в концепцию графического интерфейса.
0
Ну да. Несложные операции администрирования даже лучше и лакончиней заворачиваются в простые команды :)
0
у команд плохо с эксплорабилити
0
:) Действительно, нужно доки читать :)
Каждая классическая команда или программка в *никсах — это простой кирпичик. ПРи помощи простых же средств из них можно волшебные штучки делать, для которых в интерфейсном смысле придется та-а-а-а-а-акого нагородить…
Вы видели «интуитивный» интерфейс современных программ-монстров? Автокад из чертилок; Гудини, Блендер, Макс из рисовалок; Студия и Эклипс из программировальных; Офис из офисов. Хренушки вам интуитивность; там ж десятки кнопочек, графиков, менюшек, подменюшек… И все это еще загрузить надобно. :)
Каждая классическая команда или программка в *никсах — это простой кирпичик. ПРи помощи простых же средств из них можно волшебные штучки делать, для которых в интерфейсном смысле придется та-а-а-а-а-акого нагородить…
Вы видели «интуитивный» интерфейс современных программ-монстров? Автокад из чертилок; Гудини, Блендер, Макс из рисовалок; Студия и Эклипс из программировальных; Офис из офисов. Хренушки вам интуитивность; там ж десятки кнопочек, графиков, менюшек, подменюшек… И все это еще загрузить надобно. :)
0
1. А они увидели, что юниксоиды внедряют гуй и решили отомстить
2. PSh не для конечных пользователей а для виндовс-отморозков
2. PSh не для конечных пользователей а для виндовс-отморозков
0
А как же автодополнение команд? Я такой возможности в powershell не увидел…
0
Sign up to leave a comment.
Знакомство с PowerShell