ztommy
Goto Top

Batch-Skripte in PowerShell umwandeln

Hallo liebe Gemeinde face-smile

gibt es die Möglichkeit vorhandene Batch-Skripte in PowerShell zu konvertieren?

mein Problem ist, ich habe ein Server bekommen.
Dort laufen mehrere Batch-Skipte täglich ab.
Dies soll nun durch PowerShell ersetzt werden.
Und weil es so schön ist, natürlich zeitnah.

Da ich die Skripte nicht geschrieben habe, stehe ich da auch vor ein Problem bzgl. fehlendem Wissen, sei es batch oder PowerShell.

Daher die frage, ob man dies eventuell automatisiert umwandeln kann.

Danke und Grüße

Content-ID: 609188

Url: https://administrator.de/contentid/609188

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

146189
146189 01.10.2020 aktualisiert um 15:59:52 Uhr
Goto Top
Moin.
Nein, vollkommen automatisiert gibt es das nicht, dazu sind die Scripting-Möglichkeiten zu vielfältig, und wenn, wie solltest du auf sicherlich irgendwo auftauchende Probleme regieren können wenn du nicht das entsprechende Wissen vorweisen kannst? Es bleibt dir nur dir das nötige Wissen anzueignen, dann eine Script-Sprache zu verwenden die du beherrschst wenn du der Verantwortliche dafür bist, oder jemanden einzustellen der die Arbeit für euch vornimmt und am besten gleich auch gut dokumentiert.

Für simple Skript-Schnitzel kann man sicherlich Converter/Parser programmieren, aber wenn die Skripte komplexe Abläufe abarbeiten wird das fast unmöglich zu automatisieren.
Außerdem gibt es in Powershell viel mehr Möglichkeiten Dinge effizienter abzuarbeiten als mit Batch-Algorithmen. Das einfach nachahmen
von Batch Schritten würde also meist zu sehr ineffektiven PS Skripten führen.

Gruß
W.
TK1987
TK1987 01.10.2020 um 15:46:26 Uhr
Goto Top
Moin,

Zitat von @ZTommy:
gibt es die Möglichkeit vorhandene Batch-Skripte in PowerShell zu konvertieren?
Nein, gibt es nicht und macht aus diversen Gründen auch überhaupt keinen Sinn.

mein Problem ist, ich habe ein Server bekommen.
Dort laufen mehrere Batch-Skipte täglich ab.
Dies soll nun durch PowerShell ersetzt werden.
Und weil es so schön ist, natürlich zeitnah.
Wo ist das Problem? Wenn die Batch-Skripte derzeit fehlerfrei laufen, immer eins nach dem anderen umschreiben und austauschen; und die anderen so lange weiter laufen lassen.
Da ich die Skripte nicht geschrieben habe, stehe ich da auch vor ein Problem bzgl. fehlendem Wissen, sei es batch oder PowerShell.
Dabei können wir dir ja zur Not helfen.

Gruß Thomas
mbehrens
mbehrens 01.10.2020 um 15:56:08 Uhr
Goto Top
Zitat von @ZTommy:

gibt es die Möglichkeit vorhandene Batch-Skripte in PowerShell zu konvertieren?

Ja.


Da ich die Skripte nicht geschrieben habe, stehe ich da auch vor ein Problem bzgl. fehlendem Wissen, sei es batch oder PowerShell.

Daher die frage, ob man dies eventuell automatisiert umwandeln kann.

Nein, zur Zeit nicht.

Programmieren ist Arbeit.
Doskias
Doskias 01.10.2020 um 16:32:21 Uhr
Goto Top
Moin Tommy,

die Frage ist ja: Warum sollen die Skripte von Batch zu PowerShell wandern. In welcher Form der Befehl ausgeübt wird, ist da in meinen Augen recht egal. Batch wird genau so unterstützt wie Powershell, allerdings gibt bei Powershell einiges zu beachten was konfiguriert werden muss. Stichwort ExecutionPolicy. Einige Batch-Befehle funktionieren 1:1 in Powershell. Aber es macht keinen Sinn die Skripte einfach umzuschreiben ohne die Funktionen von Powershell zu nutzen.

Wenn es bei euch in der Firma niemanden gibt, der das kann, dann empfehle ich Schulung, einschlägige Webseiten und Bücher um PS zu lernen und zu verstehen, bevor du dich daran machst die Skripte umzuschreiben.

Mein Tipp:
Nimm dir einfach ein Skript und versuche das was das Skript macht in Powershell umzusetzen. Dann hast du (a) ein realistisches Ziel und (b) kennst du das Ergebnis durch dein BATCH-Skript ja schon und kannst diese vergleichen.
erikro
erikro 01.10.2020 aktualisiert um 19:05:22 Uhr
Goto Top
Moin,

Zitat von @ZTommy:
gibt es die Möglichkeit vorhandene Batch-Skripte in PowerShell zu konvertieren?

Frage: Gibt es eine Möglichkeit, meinen Golf I in einen aktuellen Ferrari umzuwandeln?
Antwort: Ja, verschrotte den Golf und kaufe einen Ferrari. face-wink

Und so ist es auch mit Batch und Powershell. Batch wird verschrottet und alles in der PS neu programmiert (wenn es denn sein muss).

Liebe Grüße

Erik
ZTommy
ZTommy 05.10.2020 um 12:33:20 Uhr
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
ZTommy
ZTommy 05.10.2020 um 12:33:43 Uhr
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
ZTommy
ZTommy 05.10.2020 um 12:34:02 Uhr
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
146189
146189 05.10.2020 aktualisiert um 12:36:01 Uhr
Goto Top
Zitat von @ZTommy:

Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
Tourette? Dreimal hält besser oder wie??
ZTommy
ZTommy 05.10.2020 um 12:45:24 Uhr
Goto Top
Hallöchen face-smile

erstmal einen schönen Dank an alle, die geantwortet haben.
Sorry vorab, das ich jetzt erst antworte.
Mich hat es Donnterstag Abend mit ner magen-Darm Infektion aus den Latschen gehauen.
Es geht gerade wieder etwas.

Der Gund der Umstellung ist, es wird auf dem Server Software genutzt, die so nicht sein sollte.
Ein bekanntes Entpackungstool, was hier jedem bekannt sein sollte und als Freeware sich jeder runterladen kann.
Dieses Entpackungstool wurde quasi mit in die Batch-Skripte eingebaut bzw. Batch-Skript.
Da es nicht Regelkonvorm ist, muss dies nun durch Serverseitige bzw. Windowsseitige umgestellt werden.

In einem Skript wird nun gesagt, entpacke mir die entsprechenden Dateien in ein bestimmtes Verzeichenis.
Anschließend werden in dem Skript weitere Verarbeitungen vorgenommen.
Alles in allem ist die Entpackung verschiedenster Dateien in dem Batch fest eingebaut.
Einfach so rausnehmen und für sich nur als PowerShell befehl das zu schreiben, glaube ich, macht kein Sinn.
Wüsste jetzt auch nicht wie.
Aber da ich das eh anfassen muss, kann ich auch das gleich komplett umstellen.
es gibt 2 Bacht-Skripte.
Eins ist etwas kleiner und eins, wo die Entpackung stattfindet, ist das umangreiche Skript.

Aktuell ist das ein 2012R2 Windows-Server.
Da man auch hier irgendwann zwecks Windows Support bzw. Alter umziehen muss, ist es meines Erachtens Sinnvoller, dass generell auf PowerShell umzuschreiben.

Grüße
ZTommy
ZTommy 05.10.2020 um 12:46:26 Uhr
Goto Top
Nee.
146189
146189 05.10.2020 aktualisiert um 13:01:35 Uhr
Goto Top
Ändert ja nichts, entweder selber in die Materie einarbeiten oder jemanden ins Boot holen der dir das umschreibt.
TK1987
TK1987 05.10.2020 um 14:54:38 Uhr
Goto Top
Moin,

Zitat von @ZTommy:
Ein bekanntes Entpackungstool, was hier jedem bekannt sein sollte und als Freeware sich jeder runterladen kann.
Da kommen einige infrage, warum so kryptisch?! Nenn doch mal einen Namen.
Dieses Entpackungstool wurde quasi mit in die Batch-Skripte eingebaut bzw. Batch-Skript.
Du scheinst ein Grundverständnisproblemm zu haben: Externe Programme geben immer die Syntax vor!

Das heisst: Wenn du ein Externes Programm wie z.B. 7zip zum entpacken nutzt, ist der Befehl ist immer gleich - ganz egal ob du diesen nun über CMD oder Powershell ausführst. Angepasst werden müssen da nur die Variablen, sofern denn überhaupt welche genutzt wurden.

Gruß Thomas
Doskias
Doskias 05.10.2020 aktualisiert um 16:09:26 Uhr
Goto Top
Einfach so rausnehmen und für sich nur als PowerShell befehl das zu schreiben, glaube ich, macht kein Sinn.
Wüsste jetzt auch nicht wie.

Kommt drauf an. Wenn es 7zip Archive sind, scheiterst du vermutlich ohne Zusatzsoftware.
Wenn es allerdings Zip-Archive sind lauten die magischen Worte in Powershell:
Expand-Archive -Path Zip-Archiv.Zip -DestinationPath C:\Wohinauchimmer

face-smile
ZTommy
ZTommy 06.10.2020 um 16:28:41 Uhr
Goto Top
Macht der gewohnheit. Ja, es ist 7Zip.
Das muss runter.

Ja, es sind viele Variablen, die angepasst werden müssen zur Verarbeitung.

Grüße
ZTommy
ZTommy 06.10.2020 um 16:30:51 Uhr
Goto Top
Ist es denn überhaupt möglich, aus einer Batch ein PowerShell-Skript zu starten?
Wenn ja, würde es je erst einmal reichen, das anzupassen.
Dann habe ich etwas Luft, dass ganze Skript für PowerShell anzupassen.

Grüße
Doskias
Doskias 06.10.2020 aktualisiert um 16:45:48 Uhr
Goto Top
powershell.exe [Skriptpfad]\[Skript].s1] 
startet das Skript. Aber mit den Rechten des Users. Es ersetz praktisch nur das Rechte Maustaste, ausführen als.

Gewonnen hast du damit allerdings überhaupt nichts. Das Skript ist das gleiche und /Zip brauchst du weiterhin.
ZTommy
ZTommy 07.10.2020 um 09:47:51 Uhr
Goto Top
danke Dir.

Ok, dann komme ich wohl nicht drumherum, dass komplett anfassen zu müssen...

Oder hilft es, den Step zum entpacken auszubauen und dann von dem Batch-Skript aus auf die PowerShell zu verweisen?
Mit PowerShell ist ja entpacken ohne 7Zip möglich.

Grüße
Doskias
Doskias 07.10.2020 um 10:52:21 Uhr
Goto Top
Zitat von @ZTommy:
Ok, dann komme ich wohl nicht drumherum, dass komplett anfassen zu müssen...
da ich das Skript nicht kenne, kannst du vielleicht einige Teile beibehalten. Macht aber wenig Sinn-

Oder hilft es, den Step zum entpacken auszubauen und dann von dem Batch-Skript aus auf die PowerShell zu verweisen?
Mit PowerShell ist ja entpacken ohne 7Zip möglich.

Wenn deine Aufgabe "Die Batch-Skripte ersetzen" ist, dann musst du wohl oder üble es nach PS portieren und neu schreiben. Wenn die Aufgabe allerdings ist 7Zip loszuwerden, dann könntest du (theoretisch) einen Teil in BATCH lassen und einen Teil nach PS portieren (wie das entpacken. Da ich aber deine Skripte nicht kenne und bestimmt nach dem Entpacken noch was kommt, wäre die Reihenfolge dann sicher BATCH -> PS -> Batch. Das Ganze wird in Summe dann komplizierten zu betreuen. Und wie du sagtest:

Zitat von @ZTommy:
Da ich die Skripte nicht geschrieben habe, stehe ich da auch vor ein Problem bzgl. fehlendem Wissen, sei es batch oder PowerShell.

Also Um deine Frage zu beantworten: Kann man so machen, kann man aber auch gleich richtig machen und nach PS bringen. Mach es selbst, schreib Sie per Hand, lass dir hier helfen. Du lernst eine Menge und du weißt was die Skripte machen, was dir Änderungen und Fehlersuche deutlich erleichtert. Und ja, dauert länger face-smile

Gruß
Doskias
ZTommy
ZTommy 07.10.2020 um 14:25:43 Uhr
Goto Top
Hallo Doskias,

danke für deine Antwort face-smile

Die Aufgabe ist, 7Zip loszuwerden.
Und ja, der Ablauf wäre Batch -> PS -> Batch.

Den Ablauf des entpackens könnte ich hier mal reinstellen.

Aber nicht desto trotz, werde ich alles komplett umschreiben müssen.
PS hat sicherlich mehr funktionen, die einem später mehr helfen würden als Batch.

Zeitlich gesehen ist 7Zip loszuwerden aber erstmal prio.
Das gesamte umzuschreiben würde theoretisch danach erfolgen, aber ohne zeitlichem Druck.

Grüße Tommy
erikro
erikro 07.10.2020 um 19:47:10 Uhr
Goto Top
Moin,

für Dein Vorhaben lies mal diesen Beitrag:
PowerShell Skripte für das Datei Kontextmenü erstellen - am Beispiel VirusTotal API

Der erklärt, wie Du ein PS-Skript ins Kontextmenü einbindest. Mach es rein mit Powershell, wenn Du es neu machen willst. Alles andere wäre Murks. Das ist zwar mehr Aufwand. Aber Du wirst die Powershell genauso lieben, wie Du jetzt das Batchprogrammieren hasst. face-wink

Liebe Grüße

Erik
ZTommy
ZTommy 08.10.2020 um 09:41:43 Uhr
Goto Top
Danke Dir face-wink

Naja, bzgl. lieben, das wird dann wohl ne sehr große Liebe, wenn ich das hasse face-big-smile
erikro
erikro 08.10.2020 um 20:49:40 Uhr
Goto Top
Zitat von @ZTommy:

Danke Dir face-wink

Naja, bzgl. lieben, das wird dann wohl ne sehr große Liebe, wenn ich das hasse face-big-smile

Wer die Batch nicht hasst, ist entweder über 65 oder Masochist. face-wink