Я разработчик на C # и использую PowerShell с бета-дней, когда он еще назывался Monad. Я также много занимался разработкой под UNIX, включая автоматизацию / создание сценариев с Korn Shell. Для меня PowerShell был находкой, потому что я устал от несоответствия импеданса Korn Shell с Windows. Например, указание общего сетевого пути было особенно брутто "\\\\\\server\\\\share"
IIRC. Это была игра в угадывание того, сколько раз вы избежали обратной косой черты, в зависимости от того, сколько раз оценивается строка.
Я использую PowerShell для многих задач автоматизации, таких как:
- Просмотр большого исходного каталога, в котором я хочу искать содержимое файлов CSPROJ.
- Однажды я изменил 260+ файлов VCPROJ с помощью скрипта PowerShell.
- В другой раз мне пришлось создать кучу новых проектов на C #, каждый из которых должен был настраивать достаточное количество свойств проекта, включая множество настроек Code Analysis. Я написал скрипт, чтобы взять стандартный файл проекта C # и сделать все настройки для меня. Это сэкономило мне много времени и, что более важно, избавило меня от множества ошибок и / или забывчивости установки определенных настроек
- Запросы TFS (с использованием командлета TFPT PowerShell), такие как поиск последних наборов изменений с определенным словом в комментарии о регистрации.
- Удаление всех временных файлов (bin / obj dirs, suo files и т. Д.) В определенной иерархии папок.
Чтобы заменить пользовательские утилиты командной строки:
Вы можете использовать PowerShell как отличный способ заменить все те маленькие утилиты командной строки, которые вы использовали для написания. Думать об этом. PowerShell - это достаточно мощный скриптовый язык, который дает вам доступ к большей части .NET Framework. Он особенно хорош при разборе параметров, то есть имеет встроенный механизм разбора параметров, который дает вам: именованные параметры, позиционные параметры, необязательные параметры, параметры переключателей, параметры привязки к конвейеру, проверку параметров и многое другое. Теперь рассмотрим, сколько кода в вашей типичной утилите командной строки выделено для разбора параметров по сравнению с реальной функциональностью. Я почти прекратил писать утилиты командной строки (если они не особенно сложны - тогда вы не можете победить VS отладчик). И я позволил PowerShell обрабатывать все параметры для меня. А с PowerShell 2.0 чрезвычайно легко добавить документацию / использование в вашу утилиту, просто украсив ваш скрипт некоторыми должным образом отформатированными комментариями.
Я также использую PowerShell в качестве .NET REPL :
- Устраняет необходимость создания ConsoleApplication59 только для того, чтобы посмотреть, что делает строка форматирования, например, Я просто захожу в приглашение PowerShell и пробую что-то вроде
"{0,20:F1}" -f 41.22
.
Вы также можете легко использовать механизм PowerShell в своем собственном приложении C #. Это удобно, если вы предоставляете своим конечным пользователям функции, которые вы хотели бы сделать командной строкой пригодной для сценариев. Вы можете написать эти функции в виде командлета PowerShell (в C #). Затем эти командлеты можно использовать непосредственно из командной строки, и если вы разместите PowerShell в своем приложении с графическим интерфейсом, вы сможете получить доступ к тому же набору кода, например ::
private bool VerifyPowerShellScriptSignature(string path)
{
using (var runspaceInvoker = new RunspaceInvoke())
{
Collection<PSObject> results =
runspaceInvoker.Invoke("Get-AuthenticodeSignature " + path);
Signature signature = results[0].BaseObject as Signature;
return signature == null ? false :
(signature.Status == SignatureStatus.Valid);
}
}