Menübefehle Powershell Call Und Shell Call
Zuletzt geändert: 28.02.2026 19:21

\ROOT\OBJECTS\DATAOBJECTS\{objektname}\ACTIONS\{actionname}

Diese zwei Typen von Menübefehlen sind in EULANDA® 2025.10 neu hinzugekommen und befinden sich aktuell in der Erprobungsphase. Als Typ (Type) sind deshalb aktuell Powershell.beta oder ShellCall.beta vorgesehen. Bis zur allgemeinen Freigabe ist das Anhängsel .beta notwendig, da sich bis dahin noch Details der Implementierung und Parameter ändern können.

Allgemeine Eigenschaften aller Menübefehle #

NameTypStandardBedeutung
TypestringPowershell.beta oder ShellCall.beta
TitlestringAnzeigename - z.B. im Menü
ActionClassstring(ohne)Untermenü
Hintstring(ohne)Hinweis, maximal eine Zeile
ShortCutstring(ohne)Tastenkombination, englisch. Z.B. CTRL+P
IconUrlstring(ohne)Angezeigtes Icon
SafeForBatchProcessingboolfalse

Gemeinsame Eigenschaften von ShellCall und Powershell #

NameTypBedeutung
CommandTextstringPowershell- oder Cmd-Befehl
Contextint/string0Aufruf mit aktuellem Datensatz oder allgemein
VisibleboolfalseProzessfenster ist sichtbar
InteractiveboolfalseInteraktiver Prozess
AsyncboolfalseAsynchrone Ausführung
Environmentstring(ohne)Umgebungsvariablen manipulieren. DARF NICHT leer sein. z.B.: “import CURRENT” für den aktuellen Umgebungsblock der Anwendung oder “base ps-min” für einen Minimalumfang, damit Powershell starten kann.
Logsstring(ohne)Debugausgaben (für zukünftige Erweiterungen)

Automatische Umgebungsvariablen #

folgende Umgebungsvariablen sind im aufgerufenen Prozess verfügbar

NameDatentypBedeutung
EULANDA_ALIASstringAlias des Mandanten, i.d.R. der Menüeintrag
EULANDA_SERVERNAMEstringName des SQL-Servers
EULANDA_DATABASENAMEstringName der SQL-Datenbank
EULANDA_CONNECTIONSTRINGstringADO/OleDB-Verbindungszeichenfolge
EULANDA_DOCstringName des Datenobjekts, falls zutreffend
EULANDA_CURRENT_IDintID des aktuellen Datensatzes, falls zutreffend

Powershell-spezifisch #

Type = Powershell.beta

NameDatentypBedeutung
ExecutionPolicystring
StrictModeint
CallStylestring
TimeoutvariabelTimeout in ms oder String “INFINITE”
InputFormat
OutputFormat

ShellCall-spezifisch #

Type = ShellCall.beta

aktuell keine gesonderten Einstellungen

Powershell Beispiel A #

In diesem Beispiel wird der Text “Hallo Welt!” mit der aktuellen Datensatz-ID ausgegeben. Falls kein Datensatz selektiert ist, wird eine Meldung ausgegeben.

Implementierungsdetails #

Innerhalb des Commandtext wird das Object $Context zur Verfügung gestellt, welches die aktuelle Datensatz ID oder -1 als $Context.CurrentID zur Verfügung stellt.

Eine Fehlermeldung kann über den Powershell throw-Befehl ausgegeben werden. Der Powershell-Befehl wird danach typischerweise abgebrochen, wenn keine weitere Behandlung der Exception erfolgt.

Normale Meldungen werden über write-host ausgegeben. Wie auch bei SQL-Fehlermeldungen innerhalb Eulandas kann über den Präfix [ADDRESS:USER] oder [ADDRESS:DEVELOPER] festgelegt werden, ob die Meldung direkt dem Benutzer präsentiert wird oder nur im Debug-Fenster sichtbar ist.

Commandtext #

if ($Context.CurrentID -eq -1) {  
  Throw "Es ist kein Datensatz ausgewählt" 
} else { 
  write-host "[ADDRESS:USER]Hallo Welt! Die ID für $($Context.DOCName) 
    lautet $($Context.CurrentID)"   
}

Ausgabe #

Passende Registry-Datei #

Diese kann als CNREG-Datei gespeichert oder über die Zwischenablage in der ROOT der SQL-Registry eingefügt werden über das Rechte-Maustastenmenü. Danach muss EULANDA® neu gestartet werden.

CnRegEdit1

[\OBJECTS\DATAOBJECTS\Eulanda.Adresse\Actions\user.Adresse.PowershellBeispielA]
"ActionClass"="ExtraData"
"CommandText"="if ($Context.CurrentID -eq -1) {  
  Throw ""Es ist kein Datensatz ausgewählt"" 
} else { 
  write-host ""[ADDRESS:USER]Hallo Welt! Die ID für $($Context.DOCName) 
    lautet $($Context.CurrentID)""   
}"
"Environment"="import CURRENT"
"Title"="Powershell Beispiel A"
"Type"="Powershell.beta"

Powershell Beispiel B #

Dieses Beispiel baut eine eigene Datenbankverbindung auf und führt eine einfache SQL-Abfrage aus. Der aktuelle ConnectionString steht als Umgebungsvariable EULANDA_CONNECTIONSTRING zur Verfügung.

$Conn = New-Object -ComObject ADODB.Connection
$Conn.Open($env:EULANDA_CONNECTIONSTRING)
if ($Conn.State -eq 1) {
  $Sql = "select Match from Adresse where id = $env:EULANDA_CURRENT_ID"
  $Recordset = $Conn.Execute($Sql)
  $Match = $Recordset.Fields("Match").Value
  Write-Host "[address:USER]Der Matchcode lautet: $Match"
} else {
  throw "Verbindung fehlgeschlagen!"        
}
$Conn = $Null