2009-12-02 2 views
31

В чем преимущества Python, PowerShell и других сред сценариев? Мы хотели бы стандартизировать наши скрипты и в настоящее время используем bat и cmd-файлы в качестве стандарта. Я думаю, что Python будет лучшим вариантом, чем эти, но я также изучаю PowerShell и другие инструменты для создания сценариев.Python, PowerShell или другое?

Сценарии будут использоваться для запуска таких процессов, как wget и т. Д., Для вызова веб-служб или других приложений/инструментов, которые должны выполняться в определенном порядке с определенными параметрами.

Мы в первую очередь работаем со стеком Windows, но есть хорошие шансы, что нам нужно будет поддерживать Unix в будущем.

Спасибо.

+0

Какие операционные системы? – Bratch

+1

Этот вопрос имеет некоторые бесполезные ответы. Это либо люди, которые хорошо разбираются в Python, либо люди, которые хорошо разбираются в PowerShell ... Если вы взаимодействуете с Active Directory, PowerShell, безусловно, самый простой способ. Если вы пишете приложения GUI или требуете кросс-платформенной поддержки - возможно, Python. Каждый язык делает разные вещи лучше, чем другие. –

ответ

14

IronPython имеет доступ ко всем тем же сборкам .NET, что и любой другой язык .NET для написания сценариев, зависящих от системы, в Windows. Но то же знание Python можно использовать для написания подобных скриптов в Linux, Solaris, BSD или OS/X. Если вы используете стандартный C Python в Windows, вы можете получить доступ к любым COM-объектам, и просто перевести примеры VBA в код Python. Плагин SPAMBayes Outlook является хорошим примером того, как далеко вы можете пойти с этим. http://spambayes.sourceforge.net/

Лучшая функция Python - это стандартная библиотека с батарейными батареями, и хотя это не распространяется на IronPython, большая часть ее будет работать, если вы просто укажете IronPython на установленную библиотечную папку из CPython. На самом деле, большинство чистых библиотек Python, т. Е. Не скомпилированных модулей C или C++, отлично работают с IronPython. В Windows у вас также есть выбор установки Python через Cygwin.com, который затем позволяет вам использовать множество модулей, которые обычно считаются только UNIX. Это может быть полезно, если вам нужно поддерживать кросс-платформенные скрипты, и вы предпочитаете согласованность, а не специальное кодирование для каждой ОС.

И если вам нужно использовать некоторые Java-классы, то Jython позволяет использовать тот же язык Python, который вы знаете, чтобы использовать это. Объедините это с хорошей системой очередности сообщений, такой как RabbitMQ, и вы можете иметь сценарии Python, Jython и IronPython на нескольких машинах, все сотрудничающие в выполнении работы.

Существует также огромный выбор сторонних модулей Python, и вы можете потратить несколько месяцев на трафик через delicious.com, прежде чем закончите новые открытия. Это означает, что, когда вам нужно что-то, что не входит в стандартные библиотеки Python, немного Googling часто приходит с решением.

Некоторые полезные модули Python для сценариев, чтобы заменить Баш, CMD и BAT файлы являются PEXPECT http://www.noah.org/wiki/Pexpect и Python WMI http://timgolden.me.uk/python/wmi/index.html

Но, в конце концов, Python также прекрасно работает для простых простых сценариев, которые не нуждаются в какой-либо особенности ... еще!

+2

Еще одно преимущество IronPython над PowerShell заключается в том, что для операционных систем с задней версией, если у вас уже есть .net, ее можно развернуть только с помощью развертывания XCOPY. –

1

Вопросы являются довольно неопределенными, но Python гораздо более переносим, ​​чем PowerShell; однако Python не распространен на Windows. Но, с другой стороны, я не считаю, что сценарии PowerShell будут работать на компьютере под управлением Windows, у которого нет PowerShell. Это означает, что они могут не работать в старой модели CMD-оболочки. Я думаю, вы найдете больше документации и библиотек для Python.

Powershell больше похож на Bash, чем на язык программирования, такой как Python.

Возможно, вы могли бы объяснить, что вы хотите делать со своими сценариями, и, вероятно, вы получите более качественные ответы.

+0

Вопрос был отредактирован, чтобы быть более ясным, поэтому мой ответ может выглядеть немного глупо. – jonescb

+0

Почему бы не отредактировать ответ? –

+0

Вы очень ошибаетесь; PowerShell ** - объектно-ориентированный язык программирования **. Вы также в некоторой степени ошибаетесь в отношении переносимости - api существует для переноса powershell в среду UNIX. –

2

Одним из преимуществ Python является наличие сторонних библиотек и обширная встроенная стандартная библиотека. Вы можете быстро и легко выполнять множество мощных операций с Python в различных операционных системах и средах. Это одна из причин, по которой мы используем Python здесь в офисе не только как язык сценариев, но и для всех наших бэкэнд-приложений базы данных.

Мы также используем его для очистки XML и HTML, используя ElementTree и BeautifulSoup, которые представляют собой очень мощные и гибкие библиотеки, специфичные для Python, для такого рода работ.

44

Python работает как отличный универсальный инструмент, если вы хотите заменить сценарии CMD и BAT на свои окна Windows, а также можете писать для запуска скриптов в ваших (L) inux-боксах. Это отличный, гибкий язык и может справиться со многими задачами, которые вы бросаете на него.

Это, как говорится, Powershell - удивительно универсальный инструмент для администрирования всех видов ящиков Windows; он обладает всеми возможностями .NET, с большим количеством интерфейсов в продуктах MS, таких как Exchange и Active Directory, которые являются временными. В зависимости от вашей ситуации вы можете больше использовать PS, чем другие языки сценариев, только из-за интерфейсов, доступных для продуктов MS, и я знаю, что MS, похоже, взяла на себя обязательство предоставить эти API в большом количестве продуктов. Powershell устанавливается на все текущие версии Windows (Windows 7+, Windows Server 2008+) и довольно легко устанавливается в более старых версиях.

Чтобы решить, что ваши скрипты будут использоваться для запуска других процессов, я думаю, что в этом случае любой из инструментов соответствует счету. Я бы порекомендовал PS, если вы планируете добавлять какие-либо административные задачи к сценариям, а не только к вызовам службы, но если вы придерживаетесь того, что вы описали, Python хорош.

+4

+1 Хорошо сбалансированный ответ. – micahwittman

+0

+1 Хороший ответ, но я думаю, ему нужно указать, какие операционные системы он планирует сделать, чтобы получить лучший ответ. – Bratch

+0

Я не могу говорить за Powershell, но Python был более удобным способом сценария MS Word (через OLE Automation), чем VBA. – jfs

2

Мне доставляет сожаление, что никто еще не придумал хороший ol 'Perl.

+0

PowerShell является одним из его потомков. –

+0

PowerShell все еще находится в своих корнях и доступен обычно только под 7 (да, я знаю, что он может быть установлен на xp). Хотя Perl не является родным для Windows, я все же считаю его более практичным, поскольку он существует для всех версий Windows, и многие его удобство использования переносимы. Не говоря уже о том, что, возможно, что-то, что оп хочет, чтобы кто-то уже сделал в нем <- называть его обманом :) (не укореняясь против PS, просто выставляя жестокую реальность). – Rook

1

Если вы работаете с веб-скриптами, ActivePython ActiveState, похоже, имеет большую поддержку для Windows specific API's, которая вам подойдет, и у нее есть множество замечательных портативных библиотек для работы на веб-страницах.

18

Мы хотели бы стандартизировать наши сценарии и в настоящее время использовать bat и cmd-файлы в качестве стандарта.

Похоже, что Windows - это ваша преобладающая среда.

Если это так, PowerShell будет намного лучше, чем Python.

  • PowerShell входит в Windows, Server 2008. Нет необходимости в развертывания/установки Python выполнения на каждый новый сервер, который катится в.
  • Весь связанные серверное программное обеспечение Microsoft (Exchange, Systems Center, и т.д.) переходят к командлетам PowerShell для функциональности и расширения
  • поставщиков 3 участника (например SCOM плагин) также будет использовать PowerShell скрипты/командлеты для предоставления функциональных возможностей

У меня больше опыта работы с Python, чем у PowerShell, но на стене написано, что касается экосистемы Microsoft: перейдите в PowerShell. В противном случае вы просто будете идти против зерна и постоянно взаимодействовать между Python и командными командами других.

Просто потому, что вы можете ввести код import win32com.client в Python, не ставит его на равных с PowerShell в среде Windows.

3

Если все, что вы делаете, создает множество программ, специфичных для системы, без какой-либо логики программирования, но тогда конкретная оболочка ОС может быть лучшим выбором, чем полный язык программирования общего назначения.

Смежные вопросы