FlowHeater Demo Video
 
Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA:

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3937

  • Hans-Peter Bruns
  • Hans-Peter Brunss Avatar Autor
  • Offline
  • Beiträge: 14
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.

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3938

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1514
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

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.

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.

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3939

  • Hans-Peter Bruns
  • Hans-Peter Brunss Avatar Autor
  • Offline
  • Beiträge: 14
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.

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3940

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1514
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

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.

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.

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3941

  • Hans-Peter Bruns
  • Hans-Peter Brunss Avatar Autor
  • Offline
  • Beiträge: 14
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:
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:
$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.

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3942

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1514
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

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.

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.
Letzte Änderung: von FlowHeater-Team. Begründung: Links angepasst

Parameterübergabe in Powerschell 3 Monate 3 Wochen her #3943

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1514
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.

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.
  • Seite:
  • 1

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en