Совет по написанию сценариев Windows XP, WSH по сравнению с PowerShell

После большого опыта написания сценариев в мире с открытым исходным кодом Unix / Linux с использованием таких языков, как Bourne Shell, Perl, Python и Ruby, я теперь обнаружил, что мне нужно выполнить некоторые сценарии администрирования Windows XP. Похоже, что устаревшей средой является Windows Script Host (WSH), которая может использовать различные языки сценариев, но основным языком является VBScript, основанный на COM-объектах. Однако в будущем, похоже, будет Windows PowerShell, основанная на .NET.

Я не изучал Basic со времен Applesoft в 1970-х, поэтому я не очень хочу изучать VBScript, хотя я достаточно выучился, чтобы написать небольшой скрипт для монтирования сетевых дисков. Если я собираюсь потратить время на то, чтобы действительно изучить это, я склоняюсь к тому, чтобы потратить свое время на среду .NET PowerShell, если это действительно будущее. Пару лет назад я занимался программированием Windows Forms на C #, так что я немного знаком с .NET, что также делает PowerShell привлекательным.

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

Обновление: я использовал WSH / VBScript для определенного сценария, который я устанавливаю в качестве сценария запуска на пользовательских рабочих станциях Windows XP. Все, что мне нужно сделать, это скопировать его в их папку «Автозагрузка», и все готово. Однако я выучил WSH достаточно, чтобы выполнить эту единственную работу. Я рад видеть, что будущее за PowerShell, и когда у меня возникают более сложные задачи по написанию сценариев, я обращаюсь к PowerShell.


person Greg Graham    schedule 06.04.2009    source источник


Ответы (6)


"Стоит"?

Абсолютно. Вот несколько причин, почему.

  1. Все больше и больше продуктов Microsoft основаны на PowerShell - например, Exchange Server 2007, SQL Server 2008 и т. Д.
  2. PowerShell может получить доступ к Microsoft .NET.
  3. Легко освоить - вам нужно всего несколько команд для изучения возможностей PowerShell - например, Get-Command, Get-Help, Get-Member и т. Д.
  4. Большинство команд имеют псевдонимы и отображаются так, как они похожи на команды оболочки DOS или * NIX - например, ls и dir являются псевдонимами для Get-ChildItem, cd - для Set-Location.
  5. Это отличный инструмент для разработчиков - поскольку PowerShell имеет доступ к библиотеке .NET, вы можете прототипировать некоторые из своих функций .NET в PowerShell.
  6. Вы можете перемещаться по реестру, сертификату, переменным среды и т. Д., Как если бы они были файловой системой - вы используете ту же команду, что и в FileSystem, для навигации - например, cd HKLM: \

Недостатки:

  1. PowerShell версии 1.0 не поддерживает удаленное взаимодействие (поддерживается в 2.0) и создание нового потока (с использованием System.Threading.Thread, но будет поддерживать фоновые задания в 2.0)
  2. Изучение может быть долгим, если вы не привыкли к языку на основе C # / Java
  3. It's hard to create generic .NET objects
    • e.g.) creating a generic List<int> collection is like following

$ l = новый-объект System.Collections.Generic.List``1 [[System.Int32]]

person dance2die    schedule 06.04.2009
comment
Спасибо, это тоже очень помогло. - person Greg Graham; 07.04.2009

Powershell, безусловно, лучший вариант, если вы с нетерпением ждете, но он должен быть установлен отдельно в Windows до 7, что может сделать WSH более привлекательной целью, если вы просто хотите развертывать скрипты, которые выполняются без дополнительных зависимостей. Кроме того, .NET еще не включен в старые версии Windows, такие как XP, что еще больше поднимает планку.

Однако, если вы хоть немного знакомы с .NET, Powershell покажется вам довольно интуитивно понятным. И особенно в средах Windows Server, похоже, он быстро стал стандартом по умолчанию для администрирования из командной строки, поскольку почти все недавно выпущенные серверные компоненты поставляются с настраиваемыми командлетами Powershell. Таким образом, Powershell, похоже, является для Microsoft путем, по которому они хотят идти какое-то время. Черт возьми, они пока даже не похоронили COM, так что я ожидаю, что Powershell просуществует как минимум на десять лет дольше, поскольку они позиционируют его как среду автоматизации и сценариев для административных задач.

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

При этом я все еще использую командные файлы Windows для многих вещей, которые должны работать в Windows без каких-либо зависимостей, но это просто моя грязная привычка :)

person Joey    schedule 06.04.2009
comment
Большое Вам спасибо. Это большая помощь! - person Greg Graham; 06.04.2009

Основным преимуществом WSH является то, что он устанавливается по умолчанию с Windows 98, возможно, даже с Windows 95, но поскольку PowerShell теперь поставляется с Server 2008 и может быть установлен на что угодно после XP, это становится меньшей проблемой.

Если у вас есть полный контроль над серверами, на которых будут запускаться ваши скрипты, я бы рекомендовал использовать PowerShell.

person Turnor    schedule 06.04.2009

Я довольно давно искал лучший язык сценариев для Windows (и до сих пор ищу). Однако, увидев все варианты, я остановился на JScript для WSH. Хотя Powershell явно имеет преимущества, преимущества из первого сообщения кажутся незначительными (за исключением встроенной IDE). Недостатки, однако, перечислены не полностью:

  1. Прежде чем вы сможете запустить сценарий, вы должны вручную включить возможность их запуска, что значительно усложняет развертывание в распределенной сети, чем с WSH.
  2. Соглашение об именах для командлетов. Это не camelCase и не python_tail. Это буквально обожгло мне глаза.
  3. Имена переменных начинаются с $ (я думаю, в стиле Perl? Точно не знаю) - здесь то же самое.
  4. Вы не можете использовать реальные пути для запуска скриптов.

Напротив, JScript больше похож на C, не требует явного включения запуска сценария, принимает относительные пути, чувствителен к регистру и слабо типизирован (оба являются преимуществами IMHO для языка сценариев по сравнению с VBScript). У меня не так много знаний о PowerShell, только то, что я нашел на MS Technet и в сети.

Итак, для меня две основные причины, по которым я отказался от powershell (даже зная, что он, вероятно, более мощный и MS активно его поддерживает): 1) вам нужно вручную включить возможность запуска сценария на каждой машине 2) общее представление, отличное от C, чтобы как раньше (и не только я, наверное).

person user3177112    schedule 12.03.2014
comment
другой вариант - узел nodejs.org/dist/latest/win-x86, который вероятно, запустить более свежий javascript, чем jscript - person barlop; 30.04.2016

Если возможно, используйте Posershell и встроенный C #, если нет - WSH, нет? - msdos-batch.

person STTR    schedule 01.01.2013

Сейчас мы находимся в 2017 году, и, оглядываясь назад, похоже, что Powershell был хорошим выбором, ИМХО.

person Zeek2    schedule 18.05.2017
comment
WSH мертв? Я пытаюсь понять его нынешнюю роль. - person Milind R; 18.02.2018