Quels langages de script sont utiles dans Windows? [fermé]


48

Quels langages de script sont utiles pour l'automatisation Windows?


10
J'ai donné +1 parce que je peux voir une question intéressante qui se cache derrière ce que vous avez écrit. Dans l'état actuel des choses, je pense que "principal" est un choix de mot malheureux que vous devriez modifier afin de le rendre moins vague. Peut-être «le plus couramment utilisé», «le mieux pris en charge» ou «recommandé», selon ce que vous voulez dire. Bienvenue sur SuperUser! :)
Brennan Vincent

2
@Brennan Vincent: C'est une excellente suggestion, mais changer le mot "principal" à ce stade peut nuire à l'esprit des réponses. Je pense que votre commentaire en dit long sur la question et qu'il vaut mieux laisser la question telle quelle. (+1 pour vous, au fait.)
Randolf Richardson

1
Pour le moment, je pense que cette question relève de la catégorie subjective. Cependant, avec une petite modification de la formulation, comme le suggère Brennan, je pense que cela pourrait être une entrée de wiki de communauté très intéressante.
Joe Taylor

1
Ça a l'air subjectif pour moi aussi. Pour les langages de script, "principal" ou "meilleur" ou "préféré" serait différent en fonction de la tâche particulière à accomplir, ainsi que des compétences et de l'expérience d'un individu.
Iszi

3
J'interprète la question comme suit: quel est le langage de script natif pour Windows aujourd'hui?, C.-à-d. Quel langage de script intègre des fonctions intégrées au système d'exploitation au lieu de requérir des API, ActiveX, etc.
Synetech

Réponses:


36
  1. PowerShell
  2. Hôte de script Windows
    a. VBScript
    b. JScript
  3. Fichiers batch

PowerShell (v2.0)

À partir de Windows 7 et de Server 2008, il est raisonnable de considérer PowerShell lorsqu’il est livré avec Windows. Il est également fondamental d’administrer un logiciel serveur tel que Lync et Exchange, car toute une série de commandes sont disponibles pour eux. La liste des fonctionnalités disponibles ne cesse de s'allonger . Pour plus d'informations , reportez-vous au Centre de scripts .

Hôte de script Windows

Windows Script Host (WSH) est techniquement un hôte de script pour les moteurs de script ActiveX. VBScript et JScript (implémentation de JavaScript par Microsoft) sont les deux moteurs installés par défaut. Beaucoup d'autres sont disponibles en open source, notamment Perl, PHP et Ruby.

VBScript

En utilisant une syntaxe similaire à VB6 et VB.NET, les VBScripts ne disposent pas d'un accès facile aux classes .NET (Powershell est écrit sur .NET et a donc accès à toutes les fonctions .NET). VBScript tire principalement parti du service WMI et des objets qu’il expose.

Exemple: Ceci crée un point de restauration.

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

Vous pouvez également écrire le même script en utilisant 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");
}

Fichiers de commandes

Il y a bien sûr le bon vieux fichier batch. Ils n'ont pas besoin d'intro.


7
Pour Windows 7 et Server 2008, ce serait Powershell 2.0
sshow

@sshow est d'accord pour être précis sur la version 2.0
Nick Josevski

"Ils n'ont pas besoin d'intro." Mais ne ont besoin d' un extro ...
glenn JACKMAN

16

J'écris toujours des fichiers de commandes DOS, même sous Windows 7. Pour la plupart des tâches, cela fonctionne toujours très bien et il est très simple de travailler avec (également, de nombreuses commandes DOS telles que "FOR" ont été améliorées au fil du temps et fournissent plus options et fonctionnalités qui n'étaient pas disponibles il y a plus de dix ans).

Pour moi, un fichier de commandes DOS est toujours le langage de script principal de Windows (certes, il est classique), mais tout le monde a des besoins et des préférences différents. Il y a beaucoup de choses que les fichiers de commandes DOS ne peuvent pas faire (les langages de script peuvent aussi poser des limites), et pour les rares occasions où je l’ai rencontrée, j’examine ensuite quelles sont mes autres options (souvent, il s’agit de Perl). être pour écrire un petit programme ou une application entière).

Comprendre ce que vous devez accomplir est une étape très importante pour décider des outils à utiliser. La familiarité avec les outils est un autre aspect important qui peut limiter vos options. Si vous essayez de choisir le langage de script [ou de programmation] à apprendre, nous espérons que cela vous sera utile.


10
Si vous entendez par «principal» langage de script «ancien et le plus largement utilisé», c'est certainement la bonne réponse. Cependant, c’est cmdvraiment une monstruosité, facilement le langage de script de shell TRÈS que je n’ai jamais eu le mal à utiliser.
JSB

3
Moi aussi, j'utilise des fichiers de commandes lorsque le script doit être utilisé sur d'autres versions de Windows. Si vous ne travaillez qu'avec Win7 / Server 2008, alors PowerShell est la solution.
Jtreser

5
+1 Je sais que MS besoins Powershell être elle , mais pour l' instant si vous voulez envoyer à quelqu'un un script qui exécute des « fenêtres », vous devez envoyer un fichier de commandes DOS. Le format PS convient parfaitement à certaines versions de Windows pour certaines tâches. Il génère beaucoup de puissance, mais les fichiers de commandes sont universels.
Alan Jackson

Dans certaines entreprises, par exemple la banque pour laquelle je travaille actuellement, la politique d'exécution empêche l'exécution des scripts PS. J'apprends donc batch à traduire mes scripts PS. Il y a donc des situations où Batch est encore nécessaire ...
T_D

J'acceptais votre réponse en 2011, mais avec Windows 10 Creators Update, Microsoft a fait de PowerShell la valeur par défaut pour appuyer sur Win + X, taper 'cmd' dans le menu Démarrer et maintenir Ctrl enfoncé tout en cliquant avec le bouton droit de la souris dans l'explorateur. Je considère donc maintenant Powershell comme le langage de script par défaut pour Windows, depuis la mise à jour de Windows 10 Creators et les scripts hérités BAT / CMD.
Jonas

10

Cela dépend de qui vous demandez. Certains ne quitteront jamais le lot, certains aimeront, certains aimeront l'amour, d'autres, comme AutoIt. Ensuite, il y a les plates-formes indépendantes comme Python et Perl que certains ne jurent que par tout.


2
+1 pour avoir mentionné les langages de script multiplates-formes (Perl est mon préféré et je sais que Python gagne également en popularité au fil des ans).
Randolf Richardson

2
+1 pour Perl. Il est utile sur de nombreuses plates-formes et contient des modules spécifiques à Windows.
RedGrittyBrick

1
J'ajouterais que TinyPerl est un moyen très utile d'intégrer un script Perl simple avec pas trop de dépendances. Il compilera dans un fichier EXE minuscule sous Windows. tinyperl.sourceforge.net
Benoit

4

Je suppose que le «langage» de script officiel de Windows serait (et ce depuis Win95) Windows Script Host .

Techniquement, WSH n’est pas un langage en soi, mais plutôt un environnement (et non une interface graphique) qui expose les interfaces COM pour vous permettre d’utiliser (presque) le langage de script de votre choix, de faire des choses avec le système d’exploitation, même avec des éléments qui ne sont pas intégrés de manière native. langue (par exemple, Ruby n’a pas de moyen intégré de se connecter à Windows ou TCL / TK n’a pas de moyen intégré d’afficher la boîte de dialogue Exécuter).

Vous avez peut-être vu certains fichiers WSF pouvant inclure plusieurs langues dans un seul fichier, mais les scripts WSH sont généralement écrits dans une langue et distribués avec une extension correspondant à la version de script de cette langue (par exemple, les scripts VBS pour VisualBasic, PYS pour PythonScript, etc.). .)


[Le frisson s'intensifie], j'écrivais ça. Vous savez que vous pouvez exécuter des scripts WSH arbitraires à partir d’IE? N'est-ce pas pittoresque? Bien comment ils ouvrent une grande partie de leur api au web. (Avertissement, ce cynisme est daté de XP-SP3)
ThorSummoner

L’histoire de WSH et d’IE n’est pas aussi simple que cela: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (un exemple de restrictions, en fonction des zones de sécurité), et IE 11 ne ne supporte même plus VBScript, sauf en mode hérité. Ne comptez pas sur IE pour exécuter les scripts WSH.
Jonas

4

Je dirais que AutoIt, il fournit un développement très rapide et facile sur les fenêtres et est très serré. Cela signifie que les tâches qui prennent généralement assez de code dans d'autres langues peuvent être effectuées littéralement sur une ligne dans autoit. Des fonctionnalités telles que la compilation directe au format exe sont également très utiles.


Comme les monocères, j'utilise AutoIt . Il est extrêmement polyvalent pour le prototypage rapide et les concepts de test en quelques minutes. Parmi ceux-ci, il est conçu pour l'automatisation, ce pour quoi je vois beaucoup de gens utiliser Powershell. Essayez-le :)
James

1
AutoIt est plutôt cool, en particulier pour les fonctions d'interface utilisateur (agissant comme un utilisateur tapant dans une boîte de dialogue, appuyant sur des boutons, etc.), mais ce serait vraiment compliqué d'appeler dans le langage de script "principal" de Windoze. Ces jours-ci, la plupart de mes collègues (au sein d'une équipe de plus de 20 administrateurs Windows) n'en ont même pas entendu parler.
ewall

2

Les autres langages pointés dans cette question (VbScript, PowerShell, Batch) sont très populaires et pris en charge. Si vous connaissez déjà un langage de script et que vous vous sentez à l'aise, ne vous y trompez pas.

Si vous êtes sur le point d'investir dans le choix d'une nouvelle langue, je vous suggérerais deux langues, cela dépend du travail que vous tentez de faire:

JavaScript (via WSH) - utilisez JavaScript si vous souhaitez utiliser plusieurs objets Automation en les instanciant et en les appelant dans leur modèle d'objet. Vous pouvez créer un objet d'automatisation pour à peu près tout, du serveur Exchange au document WMI en passant par les documents Office. Il existe un support de débogage avec Visual Studio (avec l'argument / x). En outre, un investissement en JavaScript s'avérera utile en HTML.

Perl - utilisez Perl si vous le pouvez pour lancer d'autres programmes, manipuler leur sortie, effectuer une expression régulière. Bien qu’il semble que cette langue soit actuellement en déclin, c’est toujours une langue très populaire, très bien soutenue par une langue de grande communauté. Vous devez également envisager d'utiliser ce langage pour communiquer avec d'autres services (pas nécessairement Windows), tels qu'un JIRA sur l'entreprise ou EC2 sur Amazon. Le débogage est pris en charge dans eclipse avec EPIC, qui constitue également un bon environnement IDE (coloration de la syntaxe, etc.). Il existe des modules dans CPAN pour tout. La connaissance de Perl s'avérera utile lorsque vous devez automatiser sur des machines autres que Windows.


1
Python est une très bonne alternative à perl, bien que les choses pour
lesquelles

1

Au tout début, il y avait VBScript suivi de Batch. Dans l'environnement d'entreprise avec Windows 7 pur et Server 2008 R2, le nouveau langage de script Powershell suscite beaucoup d'attention.


Vous semblez exprimer un vif désir de voir PowerShell prendre le relais. Serait-il juste de supposer que vous "voulez que ce soit" PowerShell? ;-D
Randolf Richardson

Je préfère PowerShell sur VBScript oui.
EKS

1

J'appuie la recommandation pour Perl, si vous êtes prêt à écrire des scripts Perl. Les personnes avec lesquelles je travaille ont utilisé et recommandé avec succès CLR Script (un peu vieux), et pour les scripts d’interaction Web, iMacros


1

Cela peut être presque n'importe quoi, selon ce que vous essayez d'automatiser. Cela variera des fichiers de commandes et de PowerShell à autohotkey et Selenium (si vous avez besoin d'automatiser certaines tâches liées à l'interface graphique).

En règle générale, il n’est pas gênant d’en apprendre un si vous devez ajouter des modifications ou prendre en charge des scripts déjà écrits. Si vous avez besoin de développer quelque chose de nouveau, choisissez une langue / méthode en fonction de vos besoins et de ce que vous savez déjà.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.