Welche Skriptsprachen sind in Windows nützlich? [geschlossen]

48

Welche Skriptsprachen sind für die Windows-Automatisierung hilfreich?

abc123
quelle
10
Ich habe +1 gegeben, weil ich eine interessante Frage sehe, die sich hinter dem verbirgt, was Sie geschrieben haben. Wie auch immer, ich denke, "main" ist eine unglückliche Wortwahl, die Sie bearbeiten sollten, um weniger vage zu machen. Vielleicht "am häufigsten verwendet", "am besten unterstützt" oder "empfohlen", je nachdem, was Sie meinen. Willkommen bei SuperUser! :)
Brennan Vincent
2
@Brennan Vincent: Das ist ein großartiger Vorschlag, aber das Ändern des Wortes "main" an dieser Stelle kann den Geist der Antworten beeinträchtigen. Ich denke, Ihr Kommentar spricht Bände zu diesem Thema, und dass die Frage besser so bleibt, wie sie ist. (Übrigens +1 für Sie.)
Randolf Richardson
1
Im Moment denke ich, dass diese Frage in die subjektive Kategorie fällt. Mit einer kleinen Änderung des Wortlauts, wie Brennan vorschlägt, könnte es sich jedoch um einen interessanten Community-Wiki-Eintrag handeln.
Joe Taylor
1
Sieht für mich auch subjektiv aus. Bei Skriptsprachen unterscheiden sich "Haupt" oder "Beste" oder "Bevorzugte" je nach der jeweiligen zu erledigenden Aufgabe und den Fähigkeiten und Erfahrungen einer Person.
Iszi
3
Unter der Frage verstehe ich: Was ist die native Skriptsprache für Windows heute? Welche Skriptsprache verfügt über integrierte Hooks und Funktionen im Betriebssystem, anstatt dass APIs, ActiveX usw. erforderlich sind, um Dinge zu erledigen.
Synetech

Antworten:

36
  1. Power Shell
  2. Windows Scripting Host
    a. VBScript
    b. JScript
  3. Batch-Dateien

PowerShell (v2.0)

Ab Windows 7 und Server 2008 ist es sinnvoll, PowerShell als Bestandteil von Windows zu betrachten, und es ist auch von grundlegender Bedeutung, Serversoftware wie Lync und Exchange zu verwalten, da für diese eine ganze Reihe von Befehlen zur Verfügung steht. Eine wachsende Liste von Funktionen ist verfügbar. Weitere Informationen finden Sie im Skriptcenter.

Windows Scripting Host

Windows Script Host (WSH) ist technisch gesehen ein Skript-Host für ActiveX Scripting Engines. VBScript und JScript (Microsoft's Implementierung von JavaScript) sind die beiden standardmäßig installierten Engines. Viele andere sind als Open Source verfügbar, einschließlich Perl, PHP und Ruby.

VBScript

Mit einer ähnlichen Syntax wie VB6 und VB.NET haben VBScripts keinen einfachen Zugriff auf .NET-Klassen (Powershell wurde in .NET geschrieben, sodass auf alle .NET-Funktionen zugegriffen werden kann). VBScript nutzt hauptsächlich den WMI-Dienst und die Objekte, die es verfügbar macht.

Beispiel: Dadurch wird ein Wiederherstellungspunkt erstellt.

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

Sie können dasselbe Skript auch mit ECMAScript schreiben:

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");
}

Befehlsstapeldateien

Es gibt natürlich die gute alte Batch-Datei. Sie brauchen kein Intro.

surfasb
quelle
7
Für Windows 7 und Server 2008 wäre es Powershell 2.0
sshow
@sshow einig darüber, dass es um 2.0 geht
Nick Josevski
"Sie brauchen kein Intro." Aber die haben eine extro brauchen ...
glenn Jackman
16

Ich schreibe immer noch DOS-Batchdateien, auch in Windows 7. Für die meisten Aufgaben funktioniert dies immer noch recht gut und es ist sehr einfach, damit zu arbeiten (auch viele DOS-Befehle wie "FOR" wurden im Laufe der Zeit verbessert und bieten mehr Optionen und Funktionen, die vor mehr als einem Jahrzehnt noch nicht verfügbar waren).

Für mich ist eine DOS-Batchdatei immer noch die Hauptskriptsprache für Windows (es ist sicherlich traditionell), aber jeder hat unterschiedliche Bedürfnisse und Vorlieben. Es gibt viele Dinge, die DOS-Batchdateien nicht können (Skriptsprachen können ebenfalls Einschränkungen mit sich bringen), und in den seltenen Fällen, in denen mir dies begegnet ist, schaue ich mir meine anderen Optionen an (oft ist es Perl oder manchmal könnte es das sein) ein kleines Programm oder eine ganze Anwendung schreiben).

Zu verstehen, was Sie tun müssen, ist ein sehr wichtiger Schritt bei der Entscheidung, welche Tools verwendet werden sollen. Die Kenntnis der Tools ist ein weiterer wichtiger Aspekt, der Ihre Optionen einschränken kann. Wenn Sie versuchen zu entscheiden, welche Skriptsprache (oder Programmiersprache) Sie lernen möchten, ist dies hoffentlich hilfreich für Sie.

Randolf Richardson
quelle
10
Wenn Sie mit "Hauptskriptsprache" "älteste und am weitesten verbreitete" meinen, ist dies definitiv die richtige Antwort. Es ist jedoch cmdwirklich eine Monstrosität, leicht die SCHLECHTESTE Shell-Skriptsprache, für die ich jemals das Pech hatte.
JSB ձոգչ
3
Ich benutze auch Batch-Dateien, wenn das Skript auf anderen Windows-Versionen verwendet werden muss. Wenn Sie sich nur mit Win7 / Server 2008 beschäftigen, ist PowerShell der richtige Weg.
jtreser
5
+1 Ich weiß, MS möchte, dass Powershell es ist , aber wenn Sie jemandem ein Skript senden möchten, das "Windows" ausführt, müssen Sie ihm eine DOS-Batchdatei senden. PS eignet sich hervorragend für bestimmte Windows-Versionen für bestimmte Aufgaben und bietet viel Leistung, aber Batch-Dateien sind universell einsetzbar.
Alan Jackson
In einigen Unternehmen, z. B. der Bank, für die ich derzeit arbeite, verhindert die Ausführungsrichtlinie, dass PS-Skripte ausgeführt werden. So lerne ich Batch, um meine PS-Skripte zu übersetzen. Es gibt also Situationen, in denen noch eine Charge benötigt wird ...
T_D
Ich habe Ihrer Antwort im Jahr 2011 zugestimmt, aber mit Windows 10 Creators Update hat Microsoft PowerShell zur Standardeinstellung gemacht, wenn Sie Win + X drücken, im Startmenü 'cmd' eingeben und beim Klicken mit der rechten Maustaste im Explorer die Strg-Taste gedrückt halten. Daher halte ich Powershell seit Windows 10 Creators Update und BAT / CMD-Legacy-Skripten für die Standard-Skriptsprache für Windows.
Jonas
10

Das hängt davon ab, wen Sie fragen. Einige werden nie Batch verlassen, einige lieben VBScript, einige lieben Powershell, andere wie AutoIt. Dann gibt es die plattformunabhängigen wie Python und Perl, auf die manche für alles schwören werden.

MaQleod
quelle
2
+1 für die Erwähnung von plattformübergreifenden Skriptsprachen (Perl ist mein Favorit, und ich weiß, dass Python im Laufe der Jahre ebenfalls an Beliebtheit gewonnen hat).
Randolf Richardson
2
+1 für Perl. Es ist auf vielen Plattformen nützlich und verfügt über einige Windows-spezifische Module.
RedGrittyBrick
1
Ich würde hinzufügen, dass TinyPerl eine sehr nützliche Möglichkeit ist, einfaches Perl-Skript mit nicht zu vielen Abhängigkeiten einzubetten. Es wird zu einer winzigen EXE-Datei unter Windows kompiliert. tinyperl.sourceforge.net
Benoit
4

Ich nehme an, die offizielle Skriptsprache für Windows wäre (und war seit Win95) Windows Script Host .

Technisch gesehen ist WSH keine Sprache für sich, sondern eine Umgebung (keine grafische Benutzeroberfläche ), die COM- Schnittstellen zur Verfügung stellt , mit denen Sie (fast) jede gewünschte Skriptsprache verwenden können, um OS-Aufgaben zu erledigen, auch Aufgaben, für die keine systemeigene Integration erforderlich ist Sprache (Ruby verfügt beispielsweise nicht über eine integrierte Möglichkeit, sich bei Windows anzumelden, oder TCL / TK verfügt nicht über eine integrierte Möglichkeit, das Dialogfeld Ausführen anzuzeigen).

Möglicherweise haben Sie einige WSF - Dateien gesehen, die mehrere Sprachen in einer Datei enthalten können. Normalerweise werden WSH - Skripte jedoch in einer Sprache geschrieben und mit einer der Skriptversion dieser Sprache entsprechenden Erweiterung verteilt (z. B. VBS für VisualBasic - Skripte, PYS für PythonScript usw.) .)

Synetech
quelle
[Schaudern verstärkt sich], das habe ich immer geschrieben. Sie wissen, dass Sie beliebige WSH-Skripte aus dem IE ausführen können? Ist das nicht urig? Schön, wie sie so viel von ihrer API für das Web öffnen. (Haftungsausschluss, dieser Zynismus wird von XP-SP3 datiert)
ThorSummoner
Die Geschichte zu WSH und IE ist nicht ganz so einfach: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (nur ein Beispiel für Einschränkungen, abhängig von den Sicherheitszonen) und IE 11 nicht unterstützt nicht einmal mehr VBScript, außer im Legacy-Modus. Verlassen Sie sich nicht auf den IE, um WSH-Skripte auszuführen.
Jonas
4

Ich würde AutoIt sagen, es bietet eine sehr schnelle und einfache Entwicklung für Windows und ist sehr eng damit verbunden. Dies bedeutet, dass Aufgaben, die normalerweise viel Code in anderen Sprachen benötigen, in autoit buchstäblich in einer Zeile ausgeführt werden können. Funktionen wie die direkte Kompilierung zu exe sind ebenfalls sehr nützlich.

2 Umdrehungen
quelle
Wie Monoceres verwende ich AutoIt . Es ist äußerst vielseitig und ermöglicht in wenigen Minuten sogar schnelle Prototypen- und Testkonzepte. Unter anderem ist es für die Automatisierung konzipiert, wofür ich viele Leute sehe, die Powershell verwenden. Probieren Sie es aus :)
James
1
AutoIt ist ziemlich cool, besonders für Benutzeroberflächenfunktionen (wie das Eingeben eines Textes in ein Dialogfeld, das Drücken von Schaltflächen usw.), aber es wäre eine echte Herausforderung, die "wichtigste" Windoze-Skriptsprache aufzurufen. Heutzutage haben die meisten meiner Kollegen (in einem Team von über 20 Windows-Administratoren) noch nicht einmal davon gehört.
ewall
2

Die anderen in dieser Frage genannten Sprachen (VbScript, PowerShell, Batch) sind sehr beliebt und werden unterstützt. Wenn Sie bereits eine Skriptsprache beherrschen und sich darin wohlfühlen, sollten Sie dies unbedingt tun.

Wenn Sie in das Erlernen einer neuen Sprache investieren möchten, würde ich Ihnen zwei Sprachen vorschlagen. Dies hängt von der Aufgabe ab, die Sie ausführen möchten:

JavaScript (über WSH) - Verwenden Sie JavaScript, wenn Sie verschiedene Automatisierungsobjekte verwenden möchten, indem Sie sie instanziieren und in ihr Objektmodell aufrufen. Sie können für so ziemlich alles ein Automatisierungsobjekt erstellen, vom Exchange-Server über WMI bis hin zu Office-Dokumenten. Es gibt eine Debug-Unterstützung für Visual Studio (mit dem Argument / x). Auch eine Investition in JavaScript wird sich in HTML als nützlich erweisen.

Perl - Verwenden Sie Perl, wenn Sie andere Programme starten, deren Ausgabe bearbeiten oder reguläre Ausdrücke ausführen können. Obwohl es den Anschein hat, dass sich diese Sprache derzeit im Niedergang befindet, ist sie immer noch sehr beliebt und wird von einer großen Gemeinschaftssprache sehr gut unterstützt. Sie sollten diese Sprache auch für die Kommunikation mit anderen Diensten (nicht unbedingt Windows) in Betracht ziehen, z. B. einem JIRA im Unternehmen oder EC2 bei Amazon. Das Debuggen wird in Eclipse mit EPIC unterstützt, das auch eine gute IDE-Umgebung ist (Syntaxfärbung usw.). Es gibt Module in CPAN für alles. Perl-Kenntnisse erweisen sich als nützlich, wenn Sie auf Nicht-Windows-Computern automatisieren müssen.

Uri
quelle
1
Python ist eine sehr gute Alternative zu Perl, obwohl die Dinge, für die Sie die beiden verwenden würden, ziemlich identisch sind
Phoshi
1

In den Anfängen gab es VBScript gefolgt von Batch, im Unternehmensumfeld mit reinem Windows 7 und Server 2008 R2 sorgt die neue Skriptsprache Powershell für großes Aufsehen.

EKS
quelle
Sie scheinen einen starken Wunsch nach einer Übernahme durch PowerShell zum Ausdruck zu bringen. Wäre es fair anzunehmen, dass Sie möchten, dass es PowerShell ist? ;-D
Randolf Richardson
Ich bevorzuge Powershell über VBScript ja.
EKS
1

Ich schließe mich der Empfehlung für Perl an, wenn Sie bereit sind, einige Perl-Skripte zu schreiben. Leute , die ich mit der Arbeit erfolgreich eingesetzt haben und empfehlen CLR Script (ein bisschen alt), und für Scripting Web - Interaktion, iMacros

Jamie Cox
quelle
1

Es kann fast alles sein, je nachdem, was Sie zu automatisieren versuchen. Dies variiert von Batch-Dateien und PowerShell bis hin zu Autohotkey und Selenium (wenn Sie einige GUI-bezogene Aufgaben automatisieren müssen).

Normalerweise ist es kein Problem, eines zu erlernen, wenn Sie einige Änderungen hinzufügen oder bereits geschriebene Skripte unterstützen müssen. Wenn Sie etwas Neues entwickeln müssen, wählen Sie Sprache / Weg basierend auf den Anforderungen und dem, was Sie bereits wissen.

Konstantin
quelle