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

Является ли PowerShell хорошим обновлением для пакетного файла?

Я упаковываю наши серверные релизы в zip файлы, используя пакетный файл (Windows), запуская версию WinZip в командной строке. Раньше мы делали это "вручную", но я разработал процесс автоматизации его с помощью командного файла.

Пакетный файл стал довольно сложным, потому что наш продукт сложный (т.е. какие разделы мы освобождаем на этот раз? Выпускаем также файлы конфигурации?), и я начинаю сталкиваться с некоторыми разочаровывающими ограничениями с пакетными файлами.

Будет ли PowerShell хорошо разбираться как "обновление" в пакетном файле? Или это полный избыток, учитывая, что большая часть того, что он будет делать, это отключение команд DOS?

Бонус: может ли PowerShell потреблять сборки .NET? Как и в, можно ли начать делать zip с помощью SharpZip?

4b9b3361

Ответ 1

Если у вас есть рабочее решение, вам не нужно идти в powershell. Сказав это, если вы планируете внести изменения или улучшить процесс, я бы настоятельно рекомендовал powershell как способ продвижения. Powershell может получить доступ к сборкам .Net... в основном. Некоторые сборки структурированы таким образом, что это усложняет работу других.

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

Ответ 2

Изначально я был очень рад PowerShell. Наконец, мощная родная оболочка в Windows. Тем не менее, я быстро понял, что по сравнению с вашей любимой оболочкой Unix PowerShell просто слишком многословно. Даже простейшие вещи слишком много печатают по сравнению с тем, что вы можете сделать с помощью инструментов bash и GNU для Win32.

Мне нравится идея, что оболочка знает о разных типах, но если мне нужно сделать такую ​​большую работу, я предпочитаю просто получать необходимые данные с помощью различных редакторов потоков unix.

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

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

Вторая отличная функция - PowerShell позволяет перечислять источники, которые обычно недоступны для потоковых редакторов, таких как реестр Windows, хранилище сертификатов и т.д. Конечно, у вас могут быть инструменты, которые делают это для вас, и представляют его как текст, но подход PowerShell просто очень изящный IMO.

Ответ 3

Взгляните на расширения сообщества PowerShell (PSCX), его БЕСПЛАТНО и у него есть командлеты Zip:

Write-Zip

Write-BZip2

Write-GZip

http://www.codeplex.com/PowerShellCX

Ответ 4

Вам следует посмотреть презентацию/обсуждение с Джеффри Сновером, создателем и архитектором PowerShell. Если вы не удивлены техническими деталями (много "вау" моментов, которые должны были быть), вы будете поражены энтузиазмом Джеффри:). Как только вы получите основы, легко быть очень продуктивным с PowerShell.

Ответ 5

Ответ: ДА - PowerShell может использовать сборки .NET. В v1 есть несколько смешных дел, если вам нужно подключить делегатов, а v2 делает их намного более чистыми.

Просто вызовите LoadFile/LoadAssembly, чтобы получить соответствующие библиотеки в памяти и уйти.

[Reflection.Assembly]::LoadFile('/path/to/sharpzip.dll')
$zip = new-object ICSharpCode.SharpZipLib.Zip.FastZip
$zip.CreateZip('C:\Sample.zip', 'C:\BuildFiles\', 'true', '^au')
# note - I didn't actually test this code 
# I don't have SharpZip downloaded - just read their reference.

Также обратите внимание, что Расширения сообщества PowerShell поддерживают различные методы сжатия, такие как write-zip.

Ответ 6

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

YMMV, попробуйте powershell, вы можете наслаждаться этим. Но попробуйте, прежде чем обновлять свои сборки.

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

Ответ 7

Я не уверен в powershell, но могу ли я рекомендовать использовать что-то вроде IronPython (если вы хотите иметь доступ к библиотекам .NET) или простой python? Вы получаете полномасштабный язык программирования с очень небольшим количеством ограничений.

Ответ 8

С одной стороны, если он работает, просто оставьте его. Но похоже, что это то, что вы будете добавлять со временем, и, конечно, ваш будущий преемник/коллега, которому нужно отредактировать командный файл, также должен его понять. Если вы находитесь на фоне программирования, то вы вполне можете найти, что Power Powershell делает ваш script намного короче и легче читать/обслуживать (например, даже имея полные операторы if и для циклов /while ). С другой стороны, если вы не слишком знакомы с программированием, многие люди находят Powershell немного сложной на первый взгляд.

Что касается части .NET, Powershell построена поверх .NET, так что да, вы можете получить доступ к сборкам .NET(но вы всегда должны видеть, есть ли первый доступный командлет).

Я бы рекомендовал книгу "The Powershell Cookbook" Ли Холмса, опубликованную О'Рейли. Он предоставляет "рецепты", которые вы можете использовать для общих задач; это, вероятно, ускорит ваше время, чтобы реализовать script, и это научит вас Powershell на этом пути.