Когда я буду использовать PowerShell поверх традиционных приложений? - PullRequest
9 голосов
/ 01 сентября 2010

В последнее время я много слышал о PowerShell, и мне было интересно, есть ли какая-либо причина использовать PowerShell вместо (например) консольного приложения или службы Windows с использованием WMI за кулисами.

Что такоепреимущества и преимущества PowerShell?Для чего это?

Ответы [ 3 ]

12 голосов
/ 01 сентября 2010

PowerShell - это интерактивная оболочка, такая как KornShell, Bash и er CMD.exe. Как и эти оболочки, он поддерживает язык сценариев (KSH, Bash, Batch). Однако PowerShell построен на основе .NET и предоставляет типы .NET и позволяет создавать и манипулировать многими типами .NET. Таким образом, вы можете использовать PowerShell для создания сценариев, которые могут делать то же, что и обычное консольное приложение .NET.

При написании небольших утилит консольных приложений необходимо учитывать, сколько усилий вы тратите на написание кода анализа и использования по сравнению с кодом, необходимым для достижения основной цели exe. Я перешел на написание множества утилит в виде скриптов PowerShell, потому что PowerShell предоставляет механизм синтаксического анализа параметров с множеством полезных функций: именованные / позиционные параметры, обязательные / необязательные параметры, значения по умолчанию для параметров, частичная спецификация имен параметров и т. Д.

PowerShell 2.0 добавляет еще больше функций в этой области (атрибуты проверки и т. Д.) С расширенными функциями. Вы можете легко написать «справочные страницы» в качестве комментариев для ваших скриптов или расширенных функций. Если раньше я тратил 50-80% своего времени, балуясь нестабильным нестандартным (или - или / и тем, и другим) кодом разбора параметров в консольном приложении C #, я позволил PowerShell справиться с этим самостоятельно. Тем не менее, я верю, что Джейкоб прав, говоря, что сложные задачи, требующие низкоуровневого кода .NET, было бы легче сделать правильно (статические проверки времени компиляции) и отладить в C # / VB / Visual Studio.

Мне бы очень хотелось, чтобы функциональность синтаксического анализа параметров PowerShell предоставлялась через набор типов .NET в BCL, чтобы вы могли написать консольное приложение и получить функциональность синтаксического анализа PowerShell. Давным-давно я использовал компонент с открытым исходным кодом под названием Genghis, но я думаю, что он был заброшен. В какой-то момент во время бета-версий .NET 4.0 в инфраструктуре появился анализатор командной строки, но он был удален до RTM. Я не думаю, что этот анализатор командной строки имел какое-либо соединение с PowerShell - и он должен иметь IMO. Так что, наверное, хорошо, что его вытащили.

5 голосов
/ 01 сентября 2010

PowerShell может делать много вещей, которые может делать консольное приложение .NET, но это все еще язык сценариев. Но это намного лучше, чем язык пакетных файлов или VBScript / JScript. Его сильные стороны включают возможность использовать UNIX-подобные каналы и фильтры, но с объектами вместо тупого текста. Он также может создавать объекты CLR и COM и вызывать их свойства и методы.

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

2 голосов
/ 04 сентября 2010

Сила Powershell - это простота и возможность взаимодействия, особенно с продуктами Microsoft. Например, в Exchange 2007 и 2010 нет способа изменить некоторые атрибуты без использования Powershell. Только в пакете обновления 2 вы могли бы управлять общими папками в Exchange 2007.

Во-вторых, я очень люблю, как все в PoSh является объектом. Такие вещи, как чтение в файле CSV, так же просто, как

$csv = import-csv c:\MyUsers.csv

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

$csv[1].UserName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...