Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

$Data = import-csv "something.csv" 

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

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

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

Ответ 2

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

  • Автоматизация задач → Ли Холмс (разработчик в команде PowerShell) опубликовал концепцию BgShell, которая была в основном версией PowerShell, размещенной в приложении Windows Forms, которая слушала нажатия клавиш и запускала действия, написанные в PowerShell на их основе. Он также включал в себя автоматизацию буфера обмена.
  • Быстрый доступ к платформе .NET. Вам не нужно компилировать и запускать что-либо или использовать другую программу, такую ​​как Snippet Compiler, для проверки некоторых функций. Загрузите сборку в сеанс PowerShell и взаимодействуйте с ней. Вы получаете всю открытость PowerShell (например, Get-Member) для изучения вашего объекта.
  • Простота создания доменных языков. Джеймс Ковач написал простой сборник script с PowerShell под названием Psake.
  • Он может предоставить язык сценариев для вашего приложения. Поскольку PowerShell входит в состав 09 общих инженерных критериев, многие приложения Microsoft будут иметь интерфейсы для PowerShell, и знакомство с синтаксисом языка будет расти. Вы можете использовать эти знания, внедряя среду исполнения PowerShell в свое приложение и предоставляя пользователям скриптовый интерфейс, определяя, к каким объектам они будут иметь доступ.
  • В той же строке, если вам нужно создать интерфейс командной строки для вашего приложения, PowerShell предоставляет значительную часть базовой сантехники, необходимой для анализа аргументов и других основных задач, оставляя для вас только бизнес-логику, и обеспечивая согласованный интерфейс с другими приложениями (например, если у вас есть учетные записи пользователей, которым необходимо управлять (которые еще не интегрированы с Active Directory, администратор может (с помощью командлетов Quest AD и интерфейса ваших приложений) QADUser | New-MyApplicationUser и будет сделано. Команда Exchange 2007 сделала это очень хорошо. Все функциональные возможности основаны на командлетах PowerShell, GUI вызывает командлеты и показывает пользователю то, что выполняется, поэтому они могут создавать сценарии на основе этого.
  • Это просто круто! Примерно в 250 строк (включая комментарии) Роб Фоуст и Джефф Хикс написал сетевого анализатора в PowerShell. Легче использовать, чем WinDump для облегчения поиска неисправностей.
  • Сообщество. Существует большое сообщество, ориентированное на PowerShell, включая разработчиков. Узнайте больше на сайте PowerShellCommunity.org.

Ответ 3

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

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

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

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

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

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

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

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

Ответ 4

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

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

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

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

Джеймс

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

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

Ответ 14

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