Які мови сценаріїв корисні в Windows? [зачинено]


48

Які мови сценаріїв корисні для автоматизації Windows?


10
Я дав +1, бо бачу цікаве запитання, яке ховається за тим, що ви написали. На жаль, я думаю, що "головне" - це невдалий вибір слова, який слід редагувати, щоб зробити менш розпливчастим. Можливо, "найчастіше використовується", "найкраще підтримується" або "рекомендується", залежно від того, що ви маєте на увазі. Ласкаво просимо до SuperUser! :)
Бреннан Вінсент

2
@ Бреннан Вінсент: Це чудова пропозиція, але зміна слова "головне" в цей момент може погіршити дух відповідей. Я думаю, що ваш коментар багато говорить про це, і що питання краще залишити так, як є. (+1, до речі, для вас.)
Рандольф Річардсон,

1
На даний момент я думаю, що це питання належить до суб'єктивної категорії. Однак, з невеликою модифікацією формулювання, як пропонує Бреннан, я думаю, що це може бути досить цікавим записом у вікі спільноти.
Джо Тейлор

1
Для мене також виглядає суб'єктивно. Для мов сценаріїв "головне" чи "найкраще" чи "бажане" відрізнятимуться залежно від конкретного завдання, яке виконується, та навичок та досвіду людини.
Іссі

3
Я вважаю, що питання означає: що є рідною мовою сценаріїв для Windows сьогодні? Тобто, якою мовою сценаріїв є вбудовані гачки та функції в ОС, на відміну від необхідності API, ActiveX тощо для того, щоб це зробити?
Synetech

Відповіді:


36
  1. PowerShell
  2. Хост сценарію Windows
    a. VBScript
    b. JScript
  3. Пакетні файли

PowerShell (v2.0)

Що стосується Windows 7 та Server 2008, розумно розглядати PowerShell при постачанні з Windows, а також важливо адмініструвати серверне програмне забезпечення, таке як Lync та Exchange, оскільки для них існує цілий набір команд. Зростає список доступних функцій, детальну інформацію див. У Центрі сценаріїв .

Хост сценарію Windows

Хост сценаріїв Windows (WSH) технічно є хост сценаріїв для ActiveX Scripting Engine. VBScript та JScript (реалізація JavaScript JavaScript) - це два двигуни, встановлені за замовчуванням. Багато інших доступних як відкритий код, включаючи 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");
}

Командні пакетні файли

Звичайно, є хороший пакетний файл. Їм не потрібно вводити.


7
Що стосується Windows 7 та Server 2008, то це буде Powershell 2.0
sshow

@sshow домовтесь про конкретність щодо 2.0
Нік Хосевський

"Їм не потрібно вводити". Але справді потрібен екстра ...
glenn jackman

16

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

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

Розуміння того, що потрібно зробити, - це дуже важливий крок у визначенні того, які інструменти використовувати. Ознайомлення з інструментами - ще один важливий аспект, який може обмежити ваші варіанти. Якщо ви намагаєтеся визначити, яку мову сценарію [чи програмування] вивчити, то, сподіваємось, це буде корисно для вас.


10
Якщо під "основною" мовою сценарію ви маєте на увазі "найдавнішу і найбільш широко використовувану", це, безумовно, правильна відповідь. Однак cmdнасправді це жахливість, легко НАЙКРАЩА мова написання оболонок, яку я коли-небудь мав нещастя використати.
JSB ձոգչ

3
Я також використовую пакетні файли, коли сценарій потрібно використовувати в інших версіях Windows. Якщо ви маєте справу лише з Win7 / Server 2008, тоді PowerShell - це шлях.
jtreser

5
+1 Я знаю, що MS хоче, щоб це було повноваження , але поки ви хочете комусь надіслати скрипт із запущеним "windows", ви повинні надіслати їм пакетний файл DOS. PS відмінно підходить для певних версій Windows для певних завдань, і вони піддають велику потужність, але пакетні файли є універсальними.
Алан Джексон

У деяких компаніях, наприклад, у банку, в якому я зараз працюю, Політика виконання не дозволяє виконувати сценарії PS. Таким чином я навчаюсь партії перекладати свої сценарії PS. Тож є деякі ситуації, коли партія все-таки потрібна ...
T_D

Я погодився з вашою відповіддю в 2011 році, але з оновленням Windows 10 Creators Update Microsoft зробила PowerShell типовою для натискання клавіші Win + X, набравши "Меню" в меню "Пуск" і утримуючи клавішу Ctrl, клацнувши правою кнопкою миші в Провіднику. Тому я зараз вважаю, що Powershell є мовою сценаріїв за замовчуванням для Windows, оскільки оновлення Windows 10 Creators та сценарії застарілих BAT / CMD.
Йонас

10

Це залежить від того, кого ви запитуєте. Деякі ніколи не залишать партії, деякі люблять vbscript, деякі люблять повноваження, інші люблять AutoIt. Потім є незалежні платформи, такі як Python та Perl, які деякі присягатимуться за все.


2
+1 за згадування мов міжплатформних сценаріїв (Perl - мій улюблений, і я знаю, що Python набирає популярності також протягом багатьох років).
Рандольф Річардсон,

2
+1 для Perl. Він корисний на багатьох платформах і має деякі специфічні для Windows модулі.
RedGrittyBrick

1
Я додам, що TinyPerl - це дуже корисний спосіб вбудувати простий скрипт Perl з не надто великою кількістю залежностей. Він компілюється в крихітний файл EXE в Windows. tinyperl.sourceforge.net
Бенуа

4

Я вважаю, що офіційною мовою сценаріїв для Windows буде (та є з Win95) хост сценарію Windows .

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

Можливо, ви бачили деякі файли WSF, які можуть містити кілька мов в одному файлі, але зазвичай WSH-сценарії написані однією мовою та розповсюджені з розширенням, що відповідає версії сценарію цієї мови (наприклад, VBS для скриптів VisualBasic, PYS для PythonScript тощо) .)


[здригання посилюється], я писав це. Ви знаєте, що можете запускати довільні сценарії 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, він забезпечує дуже швидкий і простий розвиток у Windows і дуже щільно поєднується з ним. Це означає, що завдання, які зазвичай займають досить багато коду в інших мовах, можуть виконуватися буквально в одному рядку під час автоматичної роботи. Такі функції, як пряма компіляція до 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. Налагодження підтримується в затемненні з EPIC, що також є хорошим середовищем IDE (забарвлення синтаксису тощо). У CPAN є модулі для всього. Знання Perl виявляться корисними, коли доводиться робити автоматизацію на машинах, що не працюють з Windows.


1
Python є дуже хорошою альтернативою perl, хоча речі, які ви б використали для них, є майже однаковими
Phoshi

1

У перші дні з'явився VBScript, а за ним - Batch, в корпоративному середовищі з чистою системою Windows 7 і Server 2008 R2 нова мова сценаріїв Powershell викликає багато уваги.


Ви, схоже, виражаєте гостре бажання PowerShell взяти на себе. Чи справедливо було б припустити, що ви "хочете, щоб це було" PowerShell? ;-D
Рандольф Річардсон,

Я вважаю за краще повноваження над vbscript так.
EKS

1

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


1

Це може бути майже все, залежно від того, що ви намагаєтеся автоматизувати. Він буде відрізнятися від пакетних файлів та PowerShell до автоматичної клавіші та Selenium (якщо вам потрібно автоматизувати деякі завдання, пов'язані з графічним інтерфейсом).

Зазвичай вивчити це не проблема, якщо вам потрібно додати деякі модифікації або підтримати вже написані сценарії. Якщо вам потрібно розробити щось нове - вибирайте мову / спосіб на основі вимог та того, що ви вже знаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.