PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .NET-Objekte scripten?


PatkIllA
2011-08-08, 18:10:27
Was gibt es eigentlich für möglich vorhandene .NET Klassen in Scripts zu benutzen?
Ich kenne VBScript und dann über COM zu gehen. Da muss man dann aber die Klassen oder das Assembly ComVisible machen, das Assembly registrieren und ist dann immer noch in den Objekten eingeschränkt.

Powershell kann das anscheinend auch und auch direkt auf .NET-Ebene. Hat da einer Erfahrungen mit?

Ideal wäre etwas was direkt mit Windows mitgeliefert würde und direkt läuft.

Monger
2011-08-10, 23:17:15
Da sonst keiner antwortet: hab vor nem Jahr nur mal einen ganz kurzen Blick auf Powershell geworfen.
Mein Eindruck war, dass es nicht so wirklich "out of the box" läuft. Ist nicht so, dass ein PS Skript auf jedem beliebigen Rechner ohne weitere Einstellungen läuft.
Gerade weil man so ziemlich alles damit ausführen kann was mit einer vollwertigen Standalone Applikation auch geht (und das ohne Installation), ist das Rechtemanagement ein wunder Punkt.

Vielleicht hat sich das mittlerweile geändert. Für Admins muss Powershell wohl sehr interessant sein, aber die klassischen Batch Skripte ersetzt es wohl (noch) nicht.

PatkIllA
2011-08-11, 19:34:42
Mit den Kommandozeilentools kann man auch fast alles machen und ein vbs kann COM-Objekte erstellen und benutzen und so ziemlich jede Managementfunktion aufrufen.
Ich hab auch schon mal ein wenig was mit Powershell geskriptet, um ein paar WMI-Objekte abzufragen.

Gast
2011-08-15, 13:57:12
Wenn es sich sowieso schon um .NET Klassen handelt, was spricht denn dagegen die alle in eine .dll zu packen und einfach statt dem Skript gleich ein vollwertiges VB.NET Programm zu schreiben.
Einfach mit Visual Studio ein Kommandozeilenprojekt anlegen und dann den Code reinpacken.

.bat Dateien haben ihre Berechtigung, wenn man nur schnell ein paar Dateien mit xcopy kopieren will bzw. für reine Administratoren, die nicht programmieren können, aber sobald ein paar ifs und Schleifen bzw. Zugriff auf irgendwelche Bibliotheken dazu kommt, baue ich mir doch lieber eine richtige .exe in einer richtigen Entwicklungsumgebung. Vom Visual Studio gibt es eine kostenlose Express Edition, die man nach Bedarf installieren kann, also Lizenzen sind auch kein Thema.

PatkIllA
2011-08-15, 14:56:17
Die Klasse ist sowieso in einer dll.
Das Problem ist halt, dass die Anforderungen, da recht unterschiedlich sind und ein allgemeiner Kommandozeilenparser schon verdammt aufwändig wäre, wenn man den wirklich als halbwegs professionales Tool mitliefern will.
Irgendwas installieren ist da immer schon ein Heidenaufwand und außerdem sind die das machen würden weder Programmierer noch die Administratoren dort.
Da wäre etwas wo man aus einem Bausatz von ein paar Textblöcken dass Skript zusammenbaut schon nicht schlecht.
Problematisch wird es auch, wenn man Adminrechte braucht und/oder was auf vielen Rechnern machen muss. Wie zum Beispiel eine COM-Schnittstelle zu registrieren.

PatkIllA
2011-08-15, 17:03:53
Gegen Powershell habe ich in der Zwischenzeit auch schon ein paar Gründe gefunden.

Man muss es installieren.
Damit man Skripts ausführen kann müssen die entweder signiert sein oder man muss eine Configuration setzen
Damit man .NET 4 Assemblies laden kann muss man einen Hack machen, der dann aber gleich alle Powershell-Instanzen betrifft. Dabei muss man auch noch nach 32 und 64 Bit Interpreter unterscheiden.
Powershell macht aus null bei Strings einen leeren String
double.NaN wird zu 0.0
Startzeit erscheint mir relativ lang

PatkIllA
2011-08-16, 10:50:06
Ich bin jetzt noch über CSharpCodeProvider und VBCodeProvider gestolpert.
Damit kann man ja mit wenigen Zeilen eine c# bzw vb Datei compilieren, sich den Type und Methode per Reflection rausholen und ausführen.

Kann da jemand was zu sagen?

Gast
2011-08-20, 22:52:20
Irgendwas installieren ist da immer schon ein Heidenaufwand und außerdem sind die das machen würden weder Programmierer noch die Administratoren dort.

Wenn jemand kein Admin oder Programmierer ist, dann sollte man ihm kein Tool in die Hand drücken, mit dem er beliebigen C#/VB.NET Code ausführen kann.
Abgesehen davon, dass normale User auch keine Skripsprache verstehen werden, ist es auch nicht ganz ungefährlich, wenn der erste einmal die Funktion My.Computer.FileSystem.DeleteDirectory entdeckt.

PatkIllA
2011-08-20, 22:55:00
Für normale User ist das auch nicht.
Man kann da auch nicht mehr machen, als die Rechteeinschränkung hergibt und simple Sachen wie Ordner löschen kann man auch mit einer Zeile in der Kommandozeile machen. Mit VBS kannst du dann praktisch alles machen ohne was installieren zu müssen.