Как вы используете PowerShell? [закрыто]

Windows PowerShell вышла в прошлом году и получила отличные отзывы от многих блогеров .net ( вспоминает Хансельман ). Казалось, что это отличная новая утилита, которая каким-то образом упростила все, что вы когда-либо будете делать в командной строке, и интегрировала с .Net. Однако чем больше я об этом читаю, тем больше это инструмент, который отлично подходит для ИТ-специалистов и не очень полезен для разработчиков.

Используете ли вы PowerShell в своей работе разработчика? Если так, то как? Стоит ли учиться?

Примечание. После просмотра ответов я думаю, что можно сделать вывод, что PowerShell может быть очень полезен для разработчика .Net. Однако, нет ни одного ответа ниже , что я могу маркировать , как в ответ (так что, пожалуйста , простите меня за не делать этого). Я голосую за каждый ответ, который я нашел полезным.

12.08.2008 12:04:14
14 ОТВЕТОВ

Хотя я еще не научился полностью использовать его, я фанат, потому что он поддерживает большинство (если не все) команд Unix, с которыми я знаком для навигации с помощью командной строки. Если у вас есть опыт работы * nix и вы разрабатываете для Windows, я бы рекомендовал использовать его для этого просто потому, что вам нужно будет запомнить только один набор команд.

Однако возьми то, что я говорю, с крошкой соли. Когда дело доходит до сборки и компиляции, я использую функциональность командной строки.

0
12.08.2008 12:13:26

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

1
12.08.2008 12:13:27

Я использую это для вещей типа IT Pro довольно неплохо (для этого это замечательно), но не думаю, что я использовал это много для разработки - иногда для быстрого опробования чего-то вроде String.Format. Что-то, что я буду делать, - это разработка командлетов powershell для некоторых наших приложений - чтобы позволить администраторам выполнять такие задачи, как управление пользователями через powershell, но я не думаю, что это действительно то, что вы имеете в виду.

0
12.08.2008 12:22:41

Он никогда не используется как часть моей роли в разработке, но время от времени я получаю задачу, которую я напишу для автоматизации небольшой программы, которую я теперь заставляю себя делать в powershell, и это занимает меньше времени.

Например, недавно я переместил сотни тысяч файлов с одного сервера на другой с помощью xcopy и забыл установить атрибут, чтобы сохранить даты создания файлов. Powershell на помощь. В течение десяти минут у меня был написан и протестирован сценарий, который копировал даты создания без необходимости повторного копирования файлов.

3
12.08.2008 12:18:33
Вот это да! Вы можете показать нам сценарий?
l--''''''---------'''''''''''' 4.02.2013 05:29:07

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

Я тестировал PowerShell, он выглядит хорошо для меня, но не стоит изучать совершенно новый инструмент. Кроме того, в Интернете есть отличные ресурсы для освоения PowerShell, если вам нужно или нужно это делать (PowerShell Live) , или даже рецепты для выполнения задач без необходимости проходить весь цикл обучения для себя.

1
12.08.2008 12:45:00

Это определенно стоит изучить. Вы когда-нибудь конвертировали текст? Вы когда-нибудь манипулировали XML? Вы когда-нибудь что-нибудь автоматизировали? Простой пример Кто-то дает вам файл с разделителями-запятыми, и вам нужно извлечь из него некоторые поля, чтобы импортировать их в другой инструмент / базу данных или создать список для вашей программы.

Если csv имеет имена полей в первой строке файла, вы можете сделать следующее в Powershell:

$Data = import-csv "something.csv" 

Затем вы можете ссылаться на свои данные, используя имена полей. Если у вас есть поле с именем SSN, вы можете сказать: $ Data [n] .SSN. Вы также можете просто направить команду import-csv к чему-то, что обрабатывает данные, в том числе экспортировать их в формате XML / html или как угодно, всего несколькими командами. Powershell полон подобных вещей.

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

Чтобы фактически ответить на заданный вопрос, я использую его для автоматизации вещей, которые я делаю каждый день. Я пытаюсь сделать его единственным скриптовым языком, заменяя то, что я делал в perl, python, vbscript, .bat / .cmd, и одну небольшую утилиту / программы конвертации, которые я буду создавать.

13
27.08.2009 05:47:45

Я только недавно закончил версию 1 проекта, в котором размещалась среда выполнения PowerShell для выполнения задач на удаленных системах. Я полностью не согласен с тем, что PowerShell не является инструментом разработчика.

Как продукт, основанный на .NET, он является прямым аналогом программирования на .NET. Целые .NET-программы могут быть прототипированы в PS, а также небольшие посторонние для тестирования функциональности методов ... и т. Д. То, что языковые архитекторы для PS специально разработали синтаксис PS, чтобы быть близким к C #, означает, что при написании сценариев PS и кода C # очень мало переключений контекста (что мне пришлось делать много недавно). Вы опираетесь на свои знания, уже с трудом завоеванные языками .NET, используя PS.

Как инструмент автоматизации это превосходно. Он имеет непосредственный доступ к WMI, ADO, ADSI, .NET, COM, а также может быть сплошной сваркой для работы с чем-либо еще. Это само по себе делает любую автоматизацию Windows проще и мощнее. Объем доступа к системе параллелен некоторым другим языкам (VBscript, Python), но простота использования языка и преимущество .NET Framework означает, что некоторые сценарии PS связывают воедино существующий код (повторное использование кода) вместо тратить время на написание еще одной процедуры архивации файлов (например ...)

Уже есть проекты, которые делают инструменты сборки (psake приходит на ум), чтобы облегчить жизнь разработчика. Такие проекты, как Powershell Community Extensions, демонстрируют мощные возможности расширения, которые могут достичь обычные ежедневные разработчики. Я согласен с некоторыми из приведенных выше постеров и считаю, что все, что нужно для настройки среды сборки или работы с данными для задач разработчиков, может быть сделано с помощью PS, если не быстрее, не проще, не лучше, но так же хорошо.

Джеймс

5
12.08.2008 16:12:30

Мне кажется, что WPS - это способ упростить вашу жизнь и сделать то, что вам нужно. Я не думаю, что вы собираетесь найти WPS, интегрированный, скажем, в FireFox или Quicken, но эти команды могут использовать его для этих целей ... короче говоря, "WPS не делает вашу программу, WPS делает вашу программу проще". ; О)

0
13.08.2008 17:07:40

Я администратор по профессии и только начинаю в мире разработчиков, но я вижу, что PowerShell может быть очень полезен для разработчиков несколькими способами.

  1. Автоматизация задач -> Ли Холмс (разработчик команды PowerShell) опубликовал проверочное понятие под названием BgShell, которое в основном представляло собой среду выполнения PowerShell, размещенную в приложении для форм Windows, которое прослушивало нажатия клавиш и запускало действия, написанные в PowerShell на их основе. , Это также включало некоторую автоматизацию буфера обмена.
  2. Быстрый доступ к .NET Framework. Вам не нужно что-то компилировать и запускать или использовать другую программу, такую ​​как Snippet Compiler, чтобы протестировать некоторые функции. Загрузите сборку в сеанс PowerShell и взаимодействуйте с ней. Вы получаете все возможности обнаружения PowerShell (например, Get-Member) для изучения вашего объекта.
  3. Легко создавать доменные языки. Джеймс Ковач (James Kovacs) написал простой язык сценариев сборки для PowerShell под названием Psake.
  4. Он может предоставить язык сценариев для вашего приложения. Поскольку PowerShell является частью 09 Common Engineering Criteria, многие приложения Microsoft будут иметь интерфейсы для PowerShell, и знакомство с синтаксисом языка будет расти. Вы можете использовать эти знания, встраивая среду выполнения PowerShell в свое приложение и предоставляя своим пользователям интерфейс сценариев, выбирая, к каким объектам они будут иметь доступ.
  5. Кроме того, если вам нужно создать интерфейс командной строки для вашего приложения, PowerShell предоставляет большую часть базовых функций, необходимых для анализа аргументов и других базовых задач, оставляя для написания только бизнес-логику и предоставляя согласованный интерфейс с другими приложениями (например, если у вас есть учетные записи пользователей, которыми необходимо управлять (которые еще не интегрируются с Active Directory, администратор может (используя командлеты Quest AD и интерфейс ваших приложений)) Get-QADUser | New -MyApplicationUser и все готово. Команда Exchange 2007 сделала это очень хорошо. Все функциональные возможности основаны на командлетах PowerShell, GUI вызывает командлеты и показывает пользователю, что выполняется, поэтому они могут создавать сценарии на основе этого.
  6. Это просто круто! Около 250 строк (включая комментарии) Роб Фауст и Джефф Хикс написали сетевой анализатор в PowerShell. Проще в использовании, чем WinDump для облегченного поиска неисправностей.
  7. Сообщество. Существует большое сообщество пользователей PowerShell, включая разработчиков. Узнайте больше на PowerShellCommunity.org.
12
18.08.2009 17:27:53

@EdSwangren - Если вам нужно работать в основном на платформе Windows и работать в пространстве .NET, я бы искренне рекомендовал уделить время изучению PowerShell. Он может использовать ваш существующий опыт и код .NET, работает с COM, WMI и ADSI. Он позволяет вам получить доступ практически ко всему на платформе Windows (и это только V1). V2 находится в активной разработке (CTP2 уже доступен) и будет включать в себя больше удаленного взаимодействия, многопоточности STA и многих других улучшений.

Многие поставщики также поддерживают PowerShell - от / n Software, предоставляющего сетевые командлеты, до Citrix и VMWare, предоставляющих API-интерфейсы управления через PowerShell.

2
14.08.2008 13:27:29

Вы можете ненавидеть Powershell, и все же он может быть невероятно полезным для вас. Я использую это для небольших, но важных однострочных типов вещей или в очень незначительных сценариях. Это действительно не может сравниться с C #, поэтому, как только возникает какая-либо сложность или значительное потенциальное повторное использование, я переключаюсь на C #. Кроме того, важно то, что Powershell настолько прикольный, что я ХОЧУ воссоздавать решения с нуля каждый раз, в противном случае я забываю причуды, которых много. Я слышал, что другие люди говорят это тоже!

Примеры того, для чего это действительно хорошо:

  1. Специальная обработка текста. Иногда люди передают мне большие данные или файл SQL, и они хотят манипулировать ими в другой форме, иногда очень сложными способами. Одно это сэкономило мне невероятное количество времени. Это часто вовлекает много adhoc однострочников и промежуточных файлов. Теперь, когда люди знают, что я могу это сделать, они склонны передавать такие проекты мне. Или в некоторых случаях они настолько поражены, что изучают Powershell для себя.

  2. Когда я нахожусь на сайте клиента и отчаянно нуждаюсь в автоматизации чего-либо, и это единственный инструмент, который я могу и / или мне позволено достать.

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

  4. Однострочники для копирования файлов и проектов, поиска и замены.

  5. Маленькие скрипты для сборки, если есть какие-то необычные сложности.

  6. И т. Д. В вашей системе обязательно есть небольшие причуды, когда вам нужно остановить / запустить службу, чтобы исправить что-то еще или что-то еще.

6
15.08.2008 15:21:52

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

Я также использую его для генерации случайных входных файлов для различных программ. Например, одно приложение ожидает файл XML, и у меня есть скрипт для создания этого файла со случайными значениями и уникальным идентификатором на основе текущего времени.

Я не использую это интенсивно, но я использую это каждый день.

0
21.08.2009 11:07:19

Я использую PoSH для любой «повторяющейся» работы, которую я должен выполнять для администрирования сетей, доменов, компьютеров, пользователей AD, редактирования текста, поиска файлов, миграции файловых серверов, мониторинга, а также получаю удовольствие!

0
17.08.2011 13:16:11

Я использую его для запуска нескольких процессов, а также для некоторых вещей, которые cmd не может сделать.

0
17.02.2020 15:03:27