- Beiträge: 17
Parameterübergabe in Powerschell
- Hans-Peter Bruns
- Autor
- Offline
- Benutzer
Weniger
Mehr
4 Jahre 5 Monate her #3937
von Hans-Peter Bruns
Parameterübergabe in Powerschell wurde erstellt von Hans-Peter Bruns
Hallo
Ich muss die Batchdateien für verschiedene Exporte von Batch auf Powershell umstellen.
Der Aufruf des Batchmoduls klappt, aber ich habe vier Parameter die ich an das Batchmodul übergeben muss.
In einem anderen Betrag habe ich eine Lösung gefunden die nur mit einem Parameter arbeitet. Wenn ich nun den gleichen Code mit vier Parametern erstelle bekomme ich die Fehlermeldung das der Parameter [SetParameter Para1=xxx SetParameter Para2=xxx SetParameter Para3=xxx SetParameter Para4=xxx] unknown ist.
Wie kann ich den ein Parameter Array übergeben?
Gruß
Hans-Peter Bruns
Ich muss die Batchdateien für verschiedene Exporte von Batch auf Powershell umstellen.
Der Aufruf des Batchmoduls klappt, aber ich habe vier Parameter die ich an das Batchmodul übergeben muss.
In einem anderen Betrag habe ich eine Lösung gefunden die nur mit einem Parameter arbeitet. Wenn ich nun den gleichen Code mit vier Parametern erstelle bekomme ich die Fehlermeldung das der Parameter [SetParameter Para1=xxx SetParameter Para2=xxx SetParameter Para3=xxx SetParameter Para4=xxx] unknown ist.
Wie kann ich den ein Parameter Array übergeben?
Gruß
Hans-Peter Bruns
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 5 Monate her #3938
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell
Hallo Herr Bruns,
wie sieht denn Ihr PowerShell Aufruf im Code aus? Versuchen Sie es mal so, damit sollte es eigentlich klappen.
& .\FHBatch.exe /SetParameter p1=test1 /SetParameter p2=test2 C:\Temp\import.fhd
wie sieht denn Ihr PowerShell Aufruf im Code aus? Versuchen Sie es mal so, damit sollte es eigentlich klappen.
& .\FHBatch.exe /SetParameter p1=test1 /SetParameter p2=test2 C:\Temp\import.fhd
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Hans-Peter Bruns
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 17
4 Jahre 5 Monate her #3939
von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Parameterübergabe in Powerschell
Hallo
Dieses Problem wurde (auch mit der Antwort) gelöst.
Jetzt habe ich nur noch ein kleines Problem
Wie kann ich den in einem SQLite Flow die db3 über ein Networkshare öffnen.
Ich übergeben an den Writeadapter die db3 als \\server\freigabe\aktion\xxx.db3
Leider bekomme ich "Unable to open Database" als Fehler.
Bei eigenem Code mit System.Data.SQLite läßt sich das Problem mit "\\\\server\freigabe\aktion\xxx.db3" (vier Backslach) umgehen.
Gibt es eine Lösung im Flowheater?
mfg
Hans-Peter Bruns
Dieses Problem wurde (auch mit der Antwort) gelöst.
Jetzt habe ich nur noch ein kleines Problem
Wie kann ich den in einem SQLite Flow die db3 über ein Networkshare öffnen.
Ich übergeben an den Writeadapter die db3 als \\server\freigabe\aktion\xxx.db3
Leider bekomme ich "Unable to open Database" als Fehler.
Bei eigenem Code mit System.Data.SQLite läßt sich das Problem mit "\\\\server\freigabe\aktion\xxx.db3" (vier Backslach) umgehen.
Gibt es eine Lösung im Flowheater?
mfg
Hans-Peter Bruns
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 5 Monate her #3940
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell
Hallo Herr Bruns,
Sie müssen schon etwas genauer beschreiben wie bzw. woraus Sie das aufrufen möchten. Wenn Sie das Ganze aus einem PowerShell Skript (Dateiendung .ps1) verwenden funktioniert es ohne Probleme mit Angabe des UNC Pfades.
Es muss kein „Backslash“ gequotet werden! Sollten Leerzeichen im UNC Pfad vorhanden sein müssen Sie die Angabe in Hochkommas setzen, siehe Beispiel. So sollten Sie den Pfad zu Ihrer SQLite Datenbank übergeben können.
& .\FHBatch.exe /SetParameter DB="\\server\dir 1\SQLite3.db" "\\server\dir 2\import.fhd"
Sie müssen schon etwas genauer beschreiben wie bzw. woraus Sie das aufrufen möchten. Wenn Sie das Ganze aus einem PowerShell Skript (Dateiendung .ps1) verwenden funktioniert es ohne Probleme mit Angabe des UNC Pfades.
Es muss kein „Backslash“ gequotet werden! Sollten Leerzeichen im UNC Pfad vorhanden sein müssen Sie die Angabe in Hochkommas setzen, siehe Beispiel. So sollten Sie den Pfad zu Ihrer SQLite Datenbank übergeben können.
& .\FHBatch.exe /SetParameter DB="\\server\dir 1\SQLite3.db" "\\server\dir 2\import.fhd"
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Hans-Peter Bruns
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 17
4 Jahre 5 Monate her #3941
von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Parameterübergabe in Powerschell
Hallo auch
Dann hole ich mal etwas aus
Im Moment machen wir folgendes:
Auf einem Server laufen automatisiert Generierungs Jobs die Daten aus eine SQL DB in SQLite db's übertragen.
Hier werden für fünf bis 50 "Gebiete" die Daten in eben fünf bis 50 db3 Dateien kopiert.
In einer Batchdatei übergebe ich die Parameter für:
Aktionsname (String)
Gebiet (Integer)
Zeitstempel (String)
Version (String)
Aus diesen Werten plus in der Batchdatei hinterlegten Infos wird dann das Zielverzeichnis zusammengebaut und als Parameter an den FHBatch übergeben:
Bsp:
Weil wir mit FH 3 angefangen haben ist jede Tabelle mit einer eigenen Definitionsdatei versehen.
Über ein Script wird bei Start der Parameter Outbox als Ziel für die Writeseite genommen und der Parameter Gebiet als Parameter für die SQL SELECT auf der Readseite genommen.
Das bedingt aber, das die Batchdatei auf dem Server aufgerufen wird wo auch die "Ziel"-Dateien liegen.
Jetzt soll der Aufruf aber auch über das Netzwerk funktionieren. Was grundsätzlich kein Problem ist.
Wenn auf dem Client der Flowheater installiert ist könnte ich statt \groupshares\Android\Aktion\... ja auch \\server\share\aktion\.... nehmen.
Und da geht es los.
In einer Batchdatei kann ich keine UNC Pfade verwenden (ohne zusätzliche Eingriffe auf dem Client).
Deswegen war die Idee ein Powersehllscript zu nehmen. Das funktioniert.
Das sieht folgendermaßen aus:
hier bekomme ich aber die Meldung "Unable to open Database" wenn ich das Script auf dem Client ausführe.
Interessanterweise geht es auf dem einen,auf einem anderen aber nicht. Auf beiden sind die gleichen FlowHeater Versionen installiert. Beide haben die gleichen Rechte auf dem Share.
Ich habe keine Idee warum und ich habe auch keine Idee wie ich die Parameter in einer Datei loggen könnte um so einem evtl. Fehler bei der Parameterübergabe auf die Schliche zu kommen.
Ich hoffe es wird ein wenig klarer wo ich gerade scheitere?
Btw: Gibt es eine Möglichkeit aus mehreren einzel fhd Files ein neues File zu generieren das alle Einzeldateien beinhaltet?
So könnte ich aus meinen ca. 20 einzelnen FHD Files ein Gesamtflow erzeugen.
Grüße aus dem Ruhrpott
Hans-Peter Bruns
Dann hole ich mal etwas aus
Im Moment machen wir folgendes:
Auf einem Server laufen automatisiert Generierungs Jobs die Daten aus eine SQL DB in SQLite db's übertragen.
Hier werden für fünf bis 50 "Gebiete" die Daten in eben fünf bis 50 db3 Dateien kopiert.
In einer Batchdatei übergebe ich die Parameter für:
Aktionsname (String)
Gebiet (Integer)
Zeitstempel (String)
Version (String)
Aus diesen Werten plus in der Batchdatei hinterlegten Infos wird dann das Zielverzeichnis zusammengebaut und als Parameter an den FHBatch übergeben:
Bsp:
Code:
set aktion=%1
set gebiet=%2
set version=%3
set test=%4
set exportkey=%5
set db3=aktion.db3
REM Vorgabe für das Root-Verzeichniss
set root=D:\groupshares\Android\
REM set root =\\\\S05VLTOOL001\android\
REM Pfad zu der Outbox
set outbox=%root%%aktion%\outbox\%version%\%aktion%%gebiet%\
REM Pfad zu den leeren db3 Dateien
set leeredb3=%root%%aktion%\leere_db3\%version%\
REM Eine bestehende db3 löschen
if exist %outbox%%db3% echo del %outbox%%db3%
if exist %outbox%%db3% del %outbox%%db3%
REM Aus dem Ordner leere_db3 in die Outbox kopieren
echo copy %leeredb3%%db3% %outbox%%db3%
copy %leeredb3%%db3% %outbox%%db3%
set fhbatch="C:\Program Files\FlowHeater V4\BIN\FHBatch.exe"
set log=%outbox%fhbatch_log.txt
echo %log%
if exist %log% del %log%
REM DropDowns / Auswahlen
echo *****************************************************************************
echo DropDowns
echo *****************************************************************************
echo drp_aenderungs_wunsch
%FHBATCH% /SetParameter Gebiet=%gebiet% /SetParameter Outbox=%root%%outbox%%db3% /SetParameter ExpKey=%exportkey% /SetParameter TableName4Output=drp_aenderungs_wunsch %root%%aktion%\geb_gen\%version%\sql2bd3_drp_aenderungs_wunsch.fhd >> %LOG%
echo drp_fotokategorien
%FHBATCH% /SetParameter Gebiet=%gebiet% /SetParameter Outbox=%root%%outbox%%db3% /SetParameter ExpKey=%exportkey% /SetParameter TableName4Output=drp_fotokategorien %root%%aktion%\geb_gen\%version%\sql2bd3_drp_fotokategorien.fhd >> %LOG%
Über ein Script wird bei Start der Parameter Outbox als Ziel für die Writeseite genommen und der Parameter Gebiet als Parameter für die SQL SELECT auf der Readseite genommen.
Das bedingt aber, das die Batchdatei auf dem Server aufgerufen wird wo auch die "Ziel"-Dateien liegen.
Jetzt soll der Aufruf aber auch über das Netzwerk funktionieren. Was grundsätzlich kein Problem ist.
Wenn auf dem Client der Flowheater installiert ist könnte ich statt \groupshares\Android\Aktion\... ja auch \\server\share\aktion\.... nehmen.
Und da geht es los.
In einer Batchdatei kann ich keine UNC Pfade verwenden (ohne zusätzliche Eingriffe auf dem Client).
Deswegen war die Idee ein Powersehllscript zu nehmen. Das funktioniert.
Das sieht folgendermaßen aus:
Code:
$FHDef = "sql2bd3_drp_aenderungs_wunsch.fhd"
$TableName = "drp_aenderungs_wunsch"
$fParameter = "/SetParameter Gebiet=" + $gebiet + " /SetParameter Outbox=" + $fileToCheck + " /SetParameter ExpKey=" + $exportkey + " /SetParameter TableName4Output=" + $TableName
$fSkript = $root + $aktion + "\geb_gen\" + $version + "\" + $FHDef
$Para1 = "Gebiet=" + $gebiet
$Para2 = "Outbox=\\" + $fileToCheck
$Para3 = "ExpKey=" + $exportkey
$Para4 = "TableName4Output=" + $TableName
write-host "Parameter: " $fParameter
write-host "Script: " $fSkript
write-host "*****************************************************************************"
write-host "DropDowns"
write-host "*****************************************************************************"
write-host $TableName
cmd /c $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
$FHDef = "sql2bd3_drp_fotokategorien.fhd"
$TableName = "drp_fotokategorien"
$fSkript = $root + $aktion + "\geb_gen\" + $version + "\" + $FHDef
$Para4 = "TableName4Output=" + $TableName
write-host $TableName
cmd /c $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
hier bekomme ich aber die Meldung "Unable to open Database" wenn ich das Script auf dem Client ausführe.
Interessanterweise geht es auf dem einen,auf einem anderen aber nicht. Auf beiden sind die gleichen FlowHeater Versionen installiert. Beide haben die gleichen Rechte auf dem Share.
Ich habe keine Idee warum und ich habe auch keine Idee wie ich die Parameter in einer Datei loggen könnte um so einem evtl. Fehler bei der Parameterübergabe auf die Schliche zu kommen.
Ich hoffe es wird ein wenig klarer wo ich gerade scheitere?
Btw: Gibt es eine Möglichkeit aus mehreren einzel fhd Files ein neues File zu generieren das alle Einzeldateien beinhaltet?
So könnte ich aus meinen ca. 20 einzelnen FHD Files ein Gesamtflow erzeugen.
Grüße aus dem Ruhrpott
Hans-Peter Bruns
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 5 Monate her - 4 Jahre 5 Monate her #3942
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell
Hallo Herr Bruns,
es wird klarer Das Problem wird sein, dass Sie das Batch Modul mit dem Command Line Interpreter (CMD.EXE) starten!
Rufen Sie mal, wie von mir vorgeschlagen, FHBatch.exe mit dem „Kaufmanns und &“ auf. Siehe Beispiel. So wird das Batch Modul direkt aus der PowerShell aufgerufen.
& $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
Weitere Analyse)
Falls das immer noch nicht funktioniert dann einfach mal den generierten Befehl über Write-Host ausgeben lassen.
Write-Host $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
Anschließend können wir den generierten Befehl weiter analysieren. Hier müsste dann eigentlich ein Fehler im Aufruf drin sein, evtl. Leerzeichen zuviel, etc.
Das Batch Modul gibt vor der Ausführung die gesetzten FlowHeater Parameter aus. Werden hier die Parameter richtig ausgegeben?
Zu Ihrer Frage)
Mit der aktuellen Beta Version (Download Links siehe unten) können Sie komplette Verarbeitungsschritte über die Zwischenablage kopieren. Hier einfach die Definitionen nacheinander öffnen, Verarbeitungsschritt kopieren und in eine neue Definition einfügen.
Beta Version Download
FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit
FlowHeater Server Beta
es wird klarer Das Problem wird sein, dass Sie das Batch Modul mit dem Command Line Interpreter (CMD.EXE) starten!
Rufen Sie mal, wie von mir vorgeschlagen, FHBatch.exe mit dem „Kaufmanns und &“ auf. Siehe Beispiel. So wird das Batch Modul direkt aus der PowerShell aufgerufen.
& $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
Weitere Analyse)
Falls das immer noch nicht funktioniert dann einfach mal den generierten Befehl über Write-Host ausgeben lassen.
Write-Host $FHbatch /SetParameter $Para1 /SetParameter $Para2 /SetParameter $Para3 /SetParameter $Para4 $fSkript
Anschließend können wir den generierten Befehl weiter analysieren. Hier müsste dann eigentlich ein Fehler im Aufruf drin sein, evtl. Leerzeichen zuviel, etc.
Das Batch Modul gibt vor der Ausführung die gesetzten FlowHeater Parameter aus. Werden hier die Parameter richtig ausgegeben?
Zu Ihrer Frage)
Mit der aktuellen Beta Version (Download Links siehe unten) können Sie komplette Verarbeitungsschritte über die Zwischenablage kopieren. Hier einfach die Definitionen nacheinander öffnen, Verarbeitungsschritt kopieren und in eine neue Definition einfügen.
Beta Version Download
FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit
FlowHeater Server Beta
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 4 Jahre 5 Monate her von FlowHeater-Team. Begründung: Links angepasst
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 5 Monate her #3943
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell
sorry, hier war wohl die falsche BETA Version Online. Die Version die jetzt Online ist unterstützt das Kopieren von Verarbeitungsschritten über die Zwischenablage.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.304 Sekunden