Какие языки сценариев полезны в Windows? [закрыто]

48

Какие языки сценариев полезны для автоматизации Windows?

abc123
источник
10
Я дал +1, потому что я вижу интересный вопрос, скрывающийся за тем, что вы написали. Тем не менее, я думаю, что «основной» - неудачный выбор слова, который вы должны отредактировать, чтобы сделать его менее расплывчатым. Возможно, «наиболее часто используемый», «лучше всего поддерживаемый» или «рекомендуемый», в зависимости от того, что вы имеете в виду. Добро пожаловать в SuperUser! :)
Бреннан Винсент
2
@ Бреннан Винсент: Это отличное предложение, но изменение слова «главный» на этом этапе может отвлечь от духа ответов. Я думаю, что ваш комментарий говорит о многом по этому вопросу, и что вопрос лучше оставить как есть. (+1 для вас, кстати.)
Рэндольф Ричардсон
1
На данный момент я думаю, что этот вопрос попадает в субъективную категорию. Однако с небольшой модификацией формулировки, как предполагает Бреннан, я думаю, что это может быть довольно интересная статья в вики сообщества.
Джо Тейлор
1
Выглядит субъективно для меня тоже. Для языков сценариев «основной» или «лучший» или «предпочтительный» будет отличаться в зависимости от конкретной задачи, выполняемой, а также от навыков и опыта человека.
Изи
3
Я отвечаю на вопрос: что является родным языком сценариев для Windows сегодня? Т. Е. Какой язык сценариев имеет встроенные хуки и функции в ОС, а не требует API, ActiveX и т. Д. Для достижения цели?
Synetech

Ответы:

36
  1. PowerShell
  2. Windows Scripting Host
    a. VBScript
    б. JScript
  3. Пакетные файлы

PowerShell (v2.0)

Начиная с Windows 7 и Server 2008 целесообразно рассматривать PowerShell, поскольку он поставляется вместе с Windows, и это также важно для администрирования серверного программного обеспечения, такого как Lync и Exchange, поскольку для них доступен целый набор команд. Растет список доступных функций, подробности см. В Центре сценариев .

Windows Scripting Host

Windows Script Host (WSH) технически является сценарием для ActiveX Scripting Engine. VBScript и JScript (реализация JavaScript от Microsoft) являются двумя движками, установленными по умолчанию. Многие другие доступны с открытым исходным кодом, в том числе Perl, PHP и Ruby.

VBScript

Используя синтаксис, аналогичный VB6 и VB.NET, у VBScripts отсутствует простой доступ к классам .NET (Powershell написан на .NET, поэтому он имеет доступ ко всем функциям .NET). VBScript в основном использует преимущества сервиса WMI и объектов, которые он предоставляет.

Пример: это создает точку восстановления.

Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
    Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If

JScript

Вы также можете написать тот же скрипт, используя ECMAScript:

var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
    WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}

Командные файлы команд

Конечно, есть хороший старый пакетный файл. Им не нужно вступление.

surfasb
источник
7
Что касается Windows 7 и Server 2008, то это будет Powershell 2.0
sshow
@ Шоу согласен быть конкретным в отношении 2.0
Ник Йозевски
«Им не нужно вступление». Но они нуждаются в экстро ...
Гленн Джекман
16

Я до сих пор пишу командные файлы DOS, даже в Windows 7. Для большинства задач это все еще работает довольно хорошо, и с ним очень просто работать (кроме того, многие команды DOS, такие как «FOR», были улучшены с течением времени и предоставляют больше возможностей). опции и функциональность, которые не были доступны более десяти лет назад).

Для меня пакетный файл DOS по-прежнему является основным языком сценариев для Windows (он, безусловно, традиционный), но у каждого есть свои потребности и предпочтения, которые различаются. Есть много вещей, которые DOS-файлы не могут сделать (языки сценариев могут также создавать ограничения), и в тех редких случаях, когда я сталкивался с этим, я затем смотрю, каковы другие мои варианты (часто это Perl, а иногда это может написать небольшую программу или целое приложение).

Понимание того, что вам нужно сделать, является очень важным шагом в принятии решения о том, какие инструменты использовать. Знакомство с инструментами - еще один важный аспект, который может ограничить ваши возможности. Если вы пытаетесь решить, какой язык сценариев [или программирования] изучать, то, надеюсь, это будет полезно для вас.

Рэндольф Ричардсон
источник
10
Если под «основным» языком сценариев вы подразумеваете «самый старый и наиболее широко используемый», это, безусловно, правильный ответ. Тем не менее, это cmdдействительно чудовищный, просто самый худший язык сценариев оболочки, который я когда-либо имел несчастье использовать.
JSB ձոգչ
3
Я также использую командные файлы, когда скрипт должен использоваться в других версиях Windows. Если вы имеете дело только с Win7 / Server 2008, тогда PowerShell - это путь.
jtreser
5
+1 Я знаю, что MS хочет, чтобы он был PowerShell , но сейчас, если вы хотите отправить кому-нибудь скрипт, работающий под «windows», вы должны отправить им пакетный файл DOS. PS отлично подходит для определенных версий окон для определенных задач, и они предоставляют много энергии, но пакетные файлы универсальны.
Алан Джексон
В некоторых компаниях, например, в банке, в котором я сейчас работаю, политика выполнения не позволяет выполнять сценарии PS. Таким образом, я учусь пакетно переводить мои сценарии PS. Так что в некоторых ситуациях Пакет все еще необходим ...
T_D
Я согласился с вашим ответом в 2011 году, но с помощью Windows 10 Creators Update Microsoft сделала PowerShell по умолчанию для нажатия Win + X, ввода «cmd» в меню «Пуск» и удерживания Ctrl при щелчке правой кнопкой мыши в проводнике. Поэтому теперь я считаю Powershell языком сценариев по умолчанию для Windows, начиная с Windows 10 Creators Update и устаревших сценариев BAT / CMD.
Джонас
10

Это зависит от того, кого вы спрашиваете. Некоторые никогда не выйдут из партии, некоторые любят vbscript, некоторые любят PowerShell, другие любят AutoIt. Кроме того, есть независимые от платформы, такие как Python и Perl, на которые некоторые будут ругаться.

MaQleod
источник
2
+1 за упоминание межплатформенных языков сценариев (Perl - мой любимый, и я знаю, что Python также набирает популярность с годами).
Рэндольф Ричардсон
2
+1 для Perl. Это полезно на многих платформах и имеет некоторые специфичные для Windows модули.
RedGrittyBrick
1
Я бы добавил, что TinyPerl - очень полезный способ встраивания простого Perl-скрипта с не слишком большим количеством зависимостей. Он скомпилируется в крошечный EXE-файл в Windows. tinyperl.sourceforge.net
Бенуа
4

Я предполагаю, что официальным языком сценариев для Windows будет (и был с Win95) Windows Script Host .

Технически, WSH - это не сам по себе язык, а скорее среда (не GUI), которая предоставляет COM- интерфейсы, чтобы позволить вам использовать (почти) любой язык сценариев, который вы хотите, для выполнения задач ОС, даже для вещей, не имеющих встроенного способа, встроенного в язык (например, Ruby не имеет встроенного способа входа в Windows или TCL / TK не имеет встроенного способа отображения диалога Run).

Возможно, вы видели некоторые файлы WSF, которые могут содержать несколько языков в одном файле, но обычно сценарии WSH написаны на одном языке и распространяются с расширением, соответствующим версии сценария этого языка (например, VBS для сценариев VisualBasic, PYS для PythonScript и т. Д. .)

Synetech
источник
[дрожь усиливается], я писал это раньше. Вы знаете, что можете запускать произвольные сценарии WSH из IE? Разве это не странно. Приятно, что они открывают так много своих API в сети. (Отказ от ответственности, этот цинизм датируется XP-SP3)
ThorSummoner
История с WSH и IE на самом деле не так проста: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (только один пример ограничений в зависимости от зон безопасности) И IE 11 не даже больше не поддерживает VBScript, кроме как в устаревшем режиме. Не полагайтесь на IE для выполнения сценариев WSH.
Джонас
4

Я бы сказал, AutoIt, он обеспечивает очень быструю и простую разработку для окон и очень тесно связан с ним. Это означает, что задачи, которые обычно занимают довольно много кода на других языках, могут быть выполнены буквально одной строкой в ​​autoit. Такие функции, как прямая компиляция в exe, также очень полезны.

оборота моноцере
источник
Как моноцере, я использую AutoIt . Он чрезвычайно универсален для быстрого прототипирования и тестирования концепций за несколько минут. Кроме того, он предназначен для автоматизации, и я вижу, что многие люди используют Powershell. Попробуйте :)
Джеймс
1
AutoIt довольно круто, особенно для функций пользовательского интерфейса (действует как пользователь, набирающий текст в диалоговом окне, нажимает кнопки и т. Д.), Но было бы очень сложно использовать «основной» язык сценариев Windoze. В наши дни большинство моих коллег (в команде более 20 администраторов Windows) даже не слышали об этом.
ewall
2

Другие языки, указанные в этом вопросе (VbScript, PowerShell, Batch), очень популярны и поддерживаются. Если вы уже знаете язык сценариев и чувствуете себя комфортно с ним - во что бы то ни стало, соглашайтесь с этим.

Если вы собираетесь инвестировать в освоение нового языка, я бы предложил вам два языка в зависимости от работы, которую вы пытаетесь сделать:

JavaScript (через WSH) - используйте JavaScript, если вы хотите использовать различные объекты автоматизации, создавая их экземпляры и вызывая их объектную модель. Вы можете создать объект автоматизации практически для всего: от сервера Exchange до WMI и документов Office. В Visual Studio есть поддержка отладки (с аргументом / x). Кроме того, инвестиции в JavaScript окажутся полезными в HTML.

Perl - используйте Perl, если вы можете запускать другие программы, манипулировать их выводом, выполнять регулярные выражения. Хотя кажется, что этот язык в настоящее время находится в упадке, он все еще очень популярен, очень хорошо поддерживается большим языком сообщества. Вам также следует учитывать этот язык для связи с другими службами (не обязательно Windows), такими как JIRA на предприятии или EC2 на Amazon. Отладка поддерживается в Eclipse с EPIC, который также является хорошей средой IDE (окраска синтаксиса и т. Д.). В CPAN есть модули для всего. Знание Perl окажется полезным при автоматизации на машинах, отличных от Windows.

Uri
источник
1
Python - очень хорошая альтернатива Perl, хотя вещи, для которых вы бы использовали эти два, в значительной степени идентичны
Phoshi
1

Вначале был VBScript, а затем Batch, в корпоративной среде с чистой Windows 7 и Server 2008 R2 новый язык сценариев Powershell привлекал большое внимание.

EKS
источник
Похоже, вы выражаете сильное желание, чтобы PowerShell вступил во владение. Было бы справедливо предположить, что вы «хотите, чтобы это было» PowerShell? ;-D
Рэндольф Ричардсон
Я предпочитаю PowerShell, чем VBScript, да.
EKS
1

Я рекомендую Perl, если вы хотите написать несколько скриптов Perl. Люди, с которыми я работаю, успешно использовали и рекомендуют CLR Script (немного устаревший), а также для сценариев веб-взаимодействия iMacros

Джейми Кокс
источник
1

Это может быть что угодно, в зависимости от того, что вы пытаетесь автоматизировать. Он будет варьироваться от командных файлов и PowerShell до autohotkey и Selenium (если вам нужно автоматизировать некоторые задачи, связанные с графическим интерфейсом).

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

Константин
источник