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-Key: 609188

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

Printed on: April 19, 2024 at 13:04 o'clock

Mitglied: 146189
146189 Oct 01, 2020 updated at 13:59:52 (UTC)
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.
Member: TK1987
TK1987 Oct 01, 2020 at 13:46:26 (UTC)
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
Member: mbehrens
mbehrens Oct 01, 2020 at 13:56:08 (UTC)
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.
Member: Doskias
Doskias Oct 01, 2020 at 14:32:21 (UTC)
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.
Member: erikro
erikro Oct 01, 2020 updated at 17:05:22 (UTC)
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
Member: ZTommy
ZTommy Oct 05, 2020 at 10:33:20 (UTC)
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
Member: ZTommy
ZTommy Oct 05, 2020 at 10:33:43 (UTC)
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
Member: ZTommy
ZTommy Oct 05, 2020 at 10:34:02 (UTC)
Goto Top
Hallöchen face-smile

ich antworte mal weiter unten für alle, um zu erklären warum das ganze.
Mitglied: 146189
146189 Oct 05, 2020 updated at 10:36:01 (UTC)
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??
Member: ZTommy
ZTommy Oct 05, 2020 at 10:45:24 (UTC)
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
Member: ZTommy
ZTommy Oct 05, 2020 at 10:46:26 (UTC)
Goto Top
Nee.
Mitglied: 146189
146189 Oct 05, 2020 updated at 11:01:35 (UTC)
Goto Top
Ändert ja nichts, entweder selber in die Materie einarbeiten oder jemanden ins Boot holen der dir das umschreibt.
Member: TK1987
TK1987 Oct 05, 2020 at 12:54:38 (UTC)
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
Member: Doskias
Doskias Oct 05, 2020 updated at 14:09:26 (UTC)
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
Member: ZTommy
ZTommy Oct 06, 2020 at 14:28:41 (UTC)
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
Member: ZTommy
ZTommy Oct 06, 2020 at 14:30:51 (UTC)
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
Member: Doskias
Doskias Oct 06, 2020 updated at 14:45:48 (UTC)
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.
Member: ZTommy
ZTommy Oct 07, 2020 at 07:47:51 (UTC)
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
Member: Doskias
Doskias Oct 07, 2020 at 08:52:21 (UTC)
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
Member: ZTommy
ZTommy Oct 07, 2020 at 12:25:43 (UTC)
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
Member: erikro
erikro Oct 07, 2020 at 17:47:10 (UTC)
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
Member: ZTommy
ZTommy Oct 08, 2020 at 07:41:43 (UTC)
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
Member: erikro
erikro Oct 08, 2020 at 18:49:40 (UTC)
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