Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Mit der Freeware Version können bis zu 100.000 Datensätze verarbeitet werden!
Flowheater Chart

Parameterübergabe in Powerschell

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
4 Jahre 6 Monate her #3937 von Hans-Peter Bruns
Parameterübergabe in Powerschell - Beitrag(3937) 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 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 6 Monate her #3938 von FlowHeater-Team
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell - Beitrag(3938)
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

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
4 Jahre 6 Monate her #3939 von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Parameterübergabe in Powerschell - Beitrag(3939)
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 6 Monate her #3940 von FlowHeater-Team
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell - Beitrag(3940)
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"

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Hans-Peter Bruns
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
4 Jahre 6 Monate her #3941 von Hans-Peter Bruns
Hans-Peter Bruns antwortete auf Parameterübergabe in Powerschell - Beitrag(3941)
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:
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%
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 D:\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.

Mehr
4 Jahre 6 Monate her - 4 Jahre 6 Monate her #3942 von FlowHeater-Team
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell - Beitrag(3942)
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

gruß
Robert Stark
Letzte Änderung: 4 Jahre 6 Monate her von FlowHeater-Team. Begründung: Links angepasst

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 6 Monate her #3943 von FlowHeater-Team
FlowHeater-Team antwortete auf Parameterübergabe in Powerschell - Beitrag(3943)
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.302 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.