Quali linguaggi di scripting sono utili in Windows? [chiuso]


48

Quali linguaggi di scripting sono utili per l'automazione di Windows?


10
Ho dato +1 perché posso vedere una domanda interessante in agguato dietro ciò che hai scritto. Comunque sia, penso che "principale" sia una scelta sfortunata che dovresti modificare per rendere meno vago. Forse "più comunemente usato", "meglio supportato" o "consigliato", a seconda del significato. Benvenuto in SuperUser! :)
Brennan Vincent,

2
@Brennan Vincent: Questo è un grande suggerimento, ma cambiare la parola "principale" a questo punto può sminuire lo spirito delle risposte. Penso che il tuo commento parli a volume su questo argomento e che la domanda sia meglio lasciare così com'è. (+1 per te, comunque.)
Randolf Richardson,

1
Al momento penso che questa domanda rientri nella categoria soggettiva. Tuttavia, con una piccola modifica del testo come suggerisce Brennan, penso che potrebbe essere una voce wiki della comunità piuttosto interessante.
Joe Taylor,

1
Mi sembra anche soggettivo. Per i linguaggi di scripting, "principale" o "migliore" o "preferito" differirebbero in base al compito specifico svolto e all'abilità e all'esperienza di un individuo.
Iszi,

3
Prendo la domanda per dire: qual è il linguaggio di script nativo per Windows oggi ?, cioè, quale linguaggio di script ha hook e funzioni incorporati nel sistema operativo invece di richiedere API, ActiveX, ecc. Per fare le cose?
Synetech,

Risposte:


36
  1. PowerShell
  2. Host di script di Windows
    a. VBScript
    b. JScript
  3. File batch

PowerShell (v2.0)

A partire da Windows 7 e Server 2008 è ragionevole considerare PowerShell quando viene fornito con Windows, ed è anche fondamentale amministrare software server come Lync ed Exchange in quanto è disponibile un'intera serie di comandi. C'è un elenco crescente di funzionalità disponibili, vedere Script Center per i dettagli.

Host di script di Windows

Windows Script Host (WSH) è tecnicamente un host di scripting per i motori di script ActiveX. VBScript e JScript (l'implementazione Microsoft di JavaScript) sono i due motori installati per impostazione predefinita. Molti altri sono disponibili come open source, tra cui Perl, PHP e Ruby.

VBScript

Usando una sintassi simile a VB6 e VB.NET, VBScripts non ha un facile accesso alle classi .NET (Powershell è scritto su .NET quindi ha accesso a tutte le funzioni .NET). VBScript si avvale principalmente del servizio WMI e degli oggetti che espone.

Esempio: questo crea un punto di ripristino.

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

Puoi anche scrivere lo stesso script usando 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");
}

File batch di comandi

C'è ovviamente il buon vecchio Batch File. Non hanno bisogno di presentazioni.


7
Per quanto riguarda Windows 7 e Server 2008, sarebbe Powershell 2.0
mostra

@sshow concorda sull'essere specifico su 2.0
Nick Josevski,

"Non hanno bisogno di presentazioni." Ma la fanno bisogno di un extro ...
Glenn Jackman

16

Scrivo ancora file batch DOS, anche in Windows 7. Per la maggior parte delle attività, funziona ancora abbastanza bene, ed è molto semplice lavorare con (anche, molti dei comandi DOS come "FOR" sono stati migliorati nel tempo e forniscono più opzioni e funzionalità che non erano disponibili più di un decennio fa).

Per me, un file batch DOS è ancora il principale linguaggio di scripting per Windows (sicuramente è tradizionale), ma ognuno ha esigenze e preferenze diverse. Ci sono molte cose che i file batch DOS non possono fare (anche i linguaggi di scripting possono porre dei limiti), e per le rare occasioni in cui l'ho incontrato guardo quali sono le mie altre opzioni (spesso è Perl, o talvolta potrebbe essere per scrivere un piccolo programma o un'intera applicazione).

Comprendere ciò che è necessario realizzare è un passaggio molto importante per decidere quali strumenti utilizzare. La familiarità con gli strumenti è un altro aspetto importante che può limitare le tue opzioni. Se stai cercando di decidere quale linguaggio di scripting [o programmazione] imparare, allora spero che questo ti sia utile.


10
Se per linguaggio di scripting "principale" intendi "più vecchio e più usato", questa è sicuramente la risposta giusta. Tuttavia, cmdè davvero una mostruosità, facilmente il peggior linguaggio di scripting della shell che io abbia mai avuto la sfortuna di usare.
JSB ձոգչ

3
Anch'io uso i file batch quando lo script deve essere utilizzato su altre versioni di Windows. Se hai a che fare solo con Win7 / Server 2008, PowerShell è la strada da percorrere.
Jtreser,

5
+1 So che MS vuole che PowerShell sia , ma per ora se vuoi inviare a qualcuno uno script che esegue "windows", devi inviare loro un file batch DOS. PS è ottimo per alcune versioni di Windows per determinate attività ed espongono molta potenza, ma i file batch sono universali.
Alan Jackson,

In alcune società, ad esempio la banca per cui lavoro attualmente, la politica di esecuzione impedisce l'esecuzione degli script PS. Quindi sto imparando batch per tradurre i miei script PS. Quindi ci sono alcune situazioni in cui Batch è ancora necessario ...
T_D,

Sono stato d'accordo con la tua risposta nel 2011, ma con Windows 10 Creators Update, Microsoft ha reso PowerShell il valore predefinito quando si preme Win + X, digitando 'cmd' nel menu Start e tenendo premuto Ctrl quando si fa clic con il tasto destro in Explorer. Quindi ora considero Powershell il linguaggio di scripting predefinito per Windows, da Windows 10 Creators Update e script legacy BAT / CMD.
Jonas,

10

Dipende da chi chiedi. Alcuni non lasceranno mai batch, alcuni amano vbscript alcuni amano powershell, altri come AutoIt. Poi ci sono quelli indipendenti dalla piattaforma come Python e Perl che alcuni giureranno per tutto.


2
+1 per menzionare i linguaggi di scripting multipiattaforma (Perl è il mio preferito e so che Python sta guadagnando popolarità anche negli anni).
Randolf Richardson,

2
+1 per Perl. È utile su molte piattaforme e ha alcuni moduli specifici di Windows.
RedGrittyBrick,

1
Vorrei aggiungere che TinyPerl è un modo molto utile per incorporare semplici script Perl con non troppe dipendenze. Si compila in un piccolo file EXE su Windows. tinyperl.sourceforge.net
Benoit il

4

Suppongo che il "linguaggio" ufficiale di scripting per Windows sarebbe (ed è stato da Win95) Windows Script Host .

Tecnicamente, WSH non è un linguaggio a sé stante, ma piuttosto un ambiente (non una GUI) che espone interfacce COM per permetterti di usare (quasi) qualsiasi linguaggio di scripting tu voglia, per fare cose del sistema operativo, anche cose che non hanno un modo nativo incorporato nel lingua (ad esempio, Ruby non ha un modo integrato per accedere a Windows o TCL / TK non ha un modo integrato per mostrare la finestra di dialogo Esegui).

Potresti aver visto alcuni file WSF che possono includere più lingue in un unico file, ma di solito gli script WSH sono scritti in una lingua e distribuiti con un'estensione corrispondente alla versione di scripting di quella lingua (ad esempio VBS per gli script VisualBasic, PYS per PythonScript, ecc. .)


[il brivido si intensifica], lo scrivevo. Sai che puoi eseguire script WSH arbitrari da IE? Non è caratteristico. Bello come aprono così tanto della loro API sul web. (Dichiarazione di non responsabilità, questo cinismo è datato da XP-SP3)
ThorSummoner

La storia di WSH e IE non è poi così semplice: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (solo un esempio di restrizioni, a seconda delle zone di sicurezza) E IE 11 non lo fa non supporta nemmeno più VBScript, tranne che in modalità legacy. Non fare affidamento su IE per eseguire gli script WSH.
Jonas,

4

Direi AutoIt, fornisce uno sviluppo molto veloce e facile su Windows ed è molto stretto. Ciò significa che le attività che normalmente richiedono un po 'di codice in altre lingue possono essere eseguite letteralmente in una riga in autoit. Funzionalità come la compilazione diretta per exe sono anche molto utili.


Come i monoceri, utilizzo AutoIt . È estremamente versatile per prototipi e test rapidi anche in pochi minuti. Inoltre, è progettato per l'automazione, che è ciò per cui vedo molte persone che usano Powershell. Provalo :)
James,

1
AutoIt è piuttosto interessante, specialmente per le funzioni dell'interfaccia utente (che agiscono come un utente che digita in una finestra di dialogo, premendo pulsanti, ecc.) Ma sarebbe un vero tratto chiamare nel linguaggio di scripting "principale" di Windoze. In questi giorni la maggior parte dei miei colleghi (in un team di oltre 20 amministratori di Windows) non ne ha nemmeno sentito parlare.
ewall,

2

Gli altri linguaggi indicati in questa domanda (VbScript, PowerShell, Batch) sono molto popolari e supportati. Se conosci già un linguaggio di scripting e ti senti a tuo agio, con questo vai avanti.

Se stai per investire nella raccolta di una nuova lingua, ti suggerirei due lingue per te, dipende dal lavoro che stai cercando di fare:

JavaScript (tramite WSH) : utilizzare JavaScript se si desidera utilizzare vari oggetti di automazione istanziandoli e chiamando il loro modello a oggetti. È possibile creare un oggetto di automazione praticamente per tutto, dal server Exchange ai documenti WMI e Office. Esiste un supporto di debug con Visual Studio (con l'argomento / x). Inoltre, un investimento in JavaScript si rivelerà utile in HTML.

Perl : utilizzare Perl se è possibile avviare altri programmi, manipolarne l'output, eseguire espressioni regolari. Anche se sembra che questa lingua sia attualmente in declino, è ancora molto popolare, molto ben supportata con una lingua di grande comunità. Dovresti anche prendere in considerazione questa lingua per comunicare con altri servizi (non necessariamente Windows), come un JIRA sull'azienda o EC2 su Amazon. Il debug è supportato in eclipse con EPIC, che è anche un buon ambiente IDE (colorazione della sintassi, ecc.). Ci sono moduli in CPAN per tutto. La conoscenza del Perl si rivelerà utile quando si dovrà eseguire l'automazione su macchine non Windows.


1
Python è un'ottima alternativa al perl, anche se le cose per cui
useresti

1

All'inizio c'era VBScript seguito da Batch, nell'ambiente aziendale con Windows 7 e Server 2008 R2 puri, il nuovo linguaggio di scripting Powershell sta suscitando molta attenzione.


Sembra che tu stia esprimendo un forte desiderio che PowerShell prenda il controllo. Sarebbe giusto presumere che tu "voglia che sia" PowerShell? ;-D
Randolf Richardson,

Preferisco powershell su vbscript sì.
EKS,

1

Secondo la raccomandazione per Perl, se hai intenzione di scrivere alcuni script Perl. Le persone con cui lavoro hanno usato e raccomandato con successo lo script CLR (un po 'vecchio), e per lo scripting interazione web, iMacros


1

Potrebbe essere quasi tutto, a seconda di ciò che si tenta di automatizzare. Varia da file batch e PowerShell a autohotkey e Selenium (se è necessario automatizzare alcune attività correlate alla GUI).

Di solito non è un problema apprenderne uno, se è necessario aggiungere alcune modifiche o supportare script già scritti. Se hai bisogno di sviluppare qualcosa di nuovo, scegli la lingua / il modo in base ai requisiti e ciò che già conosci.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.