Autor Thema: LScript environ Funktion Problem (Daten werden gecacht..)  (Gelesen 4786 mal)

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Hallo zusammen,

Ein einer selbstentwickelten UHD Lotus Notes Datenbank möchte ich folgendes realisieren.
Ich möchte vom ClientArbeitsplatz den "Clientnamen und den Computernamen aus den Windows Environments in ein Feld in das aktuell geöffnete Dokument schreiben !
 
Über das PostOpen Event der Maske wird u.a. folgender LS Agent angestartet der dieses auch tut.
Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim NamePC As String
   Dim NameCLI As String
   NamePC = Environ("COMPUTERNAME")
   NameCLI =  Environ("CLIENTNAME")
   Set uidoc = ws.CurrentDocument
   Call uidoc.FieldSetText("Computername", NameCLI+ ", " + NamePC)   
End Sub


Wir setzen Citrix Metraframe und FatClients ein. Die Windows Sessions unter Metaframe sind so konfiguriert, das ein sogenannter Arbeitsplatzwechsel durchgeführt wird. (d.h. z.B. trennen der WindowsSession am AP1 und wiederverbinden der Session an AP2 )

Nun das Problem.
Ist am AP1 die beschr. Funktion ausgeführt worden, dann sind die Client/Rechnerdaten natürlich korrekt im NoteDoc vorhanden. Die DB wird geschlossen aber Notes bleibt geöffnet.
Jetzt Arbeitsplatzwechsel an AP2..
Die besagte DB wird wieder geöffnet und die beschr. Funktion wird nochmal ausgeführt.
Jetzt habe ich wieder die Daten vom AP1 im Dokument !!
Erst wenn der LN Client geschlossen wird und das prozedere erneut durchlaufen wird funktionierts.

Wie kann ich dem Script abgewöhnen die Daten aus dem Cache zu laden ? Oder was könnte man noch machen, damit auch IMMER die aktuellen Client Environments ins Dokument kommen?
(Bin leider ein LScript Pussy.... :'()
Mache alles was ich kann mit Formelsprache...
Vielleicht kann mir einer Helfen ?
LG
Rainer M.








Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #1 am: 05.02.09 - 13:49:35 »
Schon. Du stellst die Frage falsch.

Du darfst nicht fragen warum cached der. Du muss fragen, wo schreibt der die Daten ins Environment rein.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #2 am: 05.02.09 - 14:53:33 »
Hallo Thomas,

??
Ich dachte. das ich meine Frage verständlich formuliert hatte.... ::)
Ich will die Daten doch AUS dem Windws-Environment lesen ???

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #3 am: 05.02.09 - 15:18:30 »
auch wenn ich da sonst leider nicht helfen kann, aber der Computername ist doch perse eh der Name des Citrixservers auf dem die Citrixsession läuft?
Gruß
Demian

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #4 am: 05.02.09 - 15:19:28 »
Mea culpa .....  :'(

Man sollte einfach komplett lesen oder zuhören und nicht gleich auf das Environment der notes.ini schließen wenn irgendwo Envir.... steht.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #5 am: 05.02.09 - 15:54:16 »
auch wenn ich da sonst leider nicht helfen kann, aber der Computername ist doch perse eh der Name des Citrixservers auf dem die Citrixsession läuft?
Da hast Recht,
aber der Clientname ist da der Rechnername (ThinClient, RitchClient etc.). Bearbeite dann den Inhalt sowieso weiter. Ich will ja hier IMMER den eindeutigen RechnerNamen haben ! (Das ist ja durch das "cachen" nicht der Fall..)
Please help me....

BigWim

  • Gast
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #6 am: 05.02.09 - 16:57:04 »
Euer Dienstleister ist nicht zufällig die FI, oder?

In Notes konnte ich bisher auf solche Info's verzichten, aber da wir so ziemlich das gleiche Problem hatten (wir haben die Druckerzuordnung an den Clientnamen gebunden), muss ist auch nach dem Arbeitplatzwechsel wissen, an welchem Client der Anwender sitzt.

Das Login machen wir mit KIX, aber die Info erhalte ich über DOS. Ich habe zwei Varianten im Einsatz, wobei ich jetzt adhoc nichts sagen, was für was ist ...

Ich hoffe, Du kommst mit dem Gedankenanstoß zurecht ....

Markus





Function GetClientnamen
    $GetClientnamen = @WKSTA
    if $IsTS
        $TempDatei = "%TEMP%\ClientIP.ini"

;       Citrix-Tool wfcinfo nutzen, um Client-IP-Adresse zu ermitteln
        shell 'cmd.exe /c $ToolPfad\wfcinfo >$TempDatei'

;       Client-IP-Adresse ermitteln
        $ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
        $rc = ReDirectOutput("$TempDatei")
        ? 'Ping='
        $rc = ReDirectOutput("")

;       Und nach Namen "fragen": Ping -a xxx.xxx.xxx.xxx
        shell 'cmd.exe /c ping.exe -a $ClientIP -n 1 | find "[$ClientIP]" >>$TempDatei'

;       Name ermitteln und zurechtschnibbeln
        $ClientName = ReadProfileString($TempDatei, 'WFClient', 'Ping')
;      Anfang zurechtschnibbeln
        $ClientName = SubStr($ClientName, instr($ClientName, 'Z021'))
;      Ende zurechtschnibbeln; da es zwei Endungen gibt (AD - Vollqualifiziert endet mit . / NT endet mit Blank!)
      $Ende = instr($ClientName,'.@LDomain')
      $Ende = iif($Ende > 0, $Ende, instr($ClientName, ' '))
        $ClientName = Left($ClientName, $Ende-1)
      ;wenn PublishedApplictation ist Clientname = Servername ("Z021ST22 [26")
;      $GetClientnamen = iif (instr($GetClientnamen, ' ') > 0, Left($GetClientnamen, 8), $GetClientnamen)
      $GetClientnamen = $ClientName
    endif
EndFunction



Function GetIcaClientInfo($Versionsart)
;   ICAClientInfoWFApplicationName
;   ICAClientInfoWFClientAddress
;   ICAClientInfoWFClientBuildNumber
;   ICAClientInfoWFClientCacheDim
;   ICAClientInfoWFClientCacheMem
;   ICAClientInfoWFClientDirectory
;   ICAClientInfoWFClientDisplay
;   ICAClientInfoWFClientName
;   ICAClientInfoWFClientProductId
;   ICAClientInfoWFConnectState
;   ICAClientInfoWFDomainName
;   ICAClientInfoWFICABufferLength
;   ICAClientInfoWFLicenseEnabler
;   ICAClientInfoWFSessionId
;   ICAClientInfoWFUserName
;   ICAClientInfoWFVersion
;   ICAClientInfoWFWinStationName

   if exist("C:\Programme\Citrix\System32\wfapi.dll")
      $tmpFile = "%temp%\icaclientinfo.txt"
      $rc = REDIRECTOUTPUT($tmpFile, 1)
      ? '[@Date]@CRLF'
      $rc = REDIRECTOUTPUT("")
      shell 'cmd.exe /c $ToolPfad\icaclientinfo.exe >>$tmpFile 2>NUL:'
      $GetIcaClientInfo = ReadProfileString($tmpFile, @Date, "Set $Versionsart")
   endif
EndFunction

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #7 am: 05.02.09 - 17:55:26 »
 :o  Bingo !!  :o
...was den Dienstleister betrifft.
Die Arbeitsplatzwechsel-Aktionen sind ja bei uns Branchenspezifisch...

Kann es aber morgen erst ausprobieren und melde mich dann hier nochmal..
Erstmal "herzlichen Dank" .

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #8 am: 09.02.09 - 13:18:24 »
@BigWim !

Hab mir es letzte Woche gar nicht genau angeschaut. Ist ja Kix Script und somit schon ausgeschieden da wir ZPP Betreiber sind (also kein Zugriff/Einfluss auf LoginScripts etc. LEIDER.  :o

Also....
Hat jemand vielleicht doch eine LScript basierende und funktionierende Antwort auf mein Problem ??

BigWim

  • Gast
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #9 am: 09.02.09 - 14:31:37 »
Hallo Rainer,

Du brauchst keinen Zugriff auf LoginScripte & Co. Es zwar in KIX umgesetzt, ja, aber die entscheidenen Infomationen liefert DOS. Ich versuche noch mal kurz zu erklären, was Du tun mußt bzw was die Funktion GetClientNamen tut . Du mußt also "nur" die Aufruf aus LotusScript heraus realisieren (z. B. mit Execute o.ä.), aber dafür Bestand hier noch keine Bedarf - ich darf ja KIX  ;D

Vielleicht hilft Dir das weiter:

Code
shell 'cmd.exe /c $ToolPfad\wfcinfo >$TempDatei'
WFCInfo = Citrix-Tool.
Kommt mit der Citrix-Installation. Liefert Sitzungsdaten, u. a. auch die IP-Adresse des "echten" Clients.


Code
$ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
Die Ausgabe von wfcinfo in eine Datei umlenken. Kann genutzt werden wie eine Windows-INI-Datei. Hier im Forum gibt es Beispiele, wie der Zugriff von LS auf die Windows-API genutzt werden. Oder auslesen der IP-Adresse selber realisieren.


Code
shell 'cmd.exe /c ping.exe -a $ClientIP -n 1 | find "[$ClientIP]" >>$TempDatei'
Und mit dieser gewonnenen Information per DOS den Namen des Clients ermitteln. Ausgabe wird wieder in eine Datei umgelenkt und ausgelesen. Zwecks Verwertbarkeit habe ich zuvor dafür gesorgt, dass meine Ausgabedatei wie eine INI-Datei behandelt werden kann.

Code
;       Client-IP-Adresse ermitteln
        $ClientIP = ReadProfileString($tempDatei, 'WFClient', 'WFClientAddress')
        $rc = ReDirectOutput("$TempDatei")
        ? 'Ping='
        $rc = ReDirectOutput("")


Viel Erfolg
Markus


Ach so:

Die Funktion GetIcaClientInfo (...) brauchst Du für Deine Zwecke nicht. Habe noch mal nachgeschaut. Irgandwann & Irgendwo mußte ich auch mal wissen, welche Published Application gerade gestartet wird. Mit dieser Funktion kannst Du also mehr über die Sitzung erfahren. Die möglichen Werte sind als Kommentar in der Funktion.

Der entscheidene Aufruf ist allerdings auch wieder "nur" DOS, also auch nachbaubar ....



BigWim

  • Gast
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #10 am: 09.02.09 - 15:10:56 »
nochmal ich

Vielleicht gibt es ja ein Verzeichnis auf den TS, wo Du die kix32.exe hinlegen kannst (KIX benötigt keine Installation). Dann kannst Du das KIX-Script nahezu 1:1 übernehmen. Du mußt dann nur noch

1. per LS-Script für den  Aufruf sorgen
Code
	sProgrammAufruf = "c:\windows\system32\kix32.exe c:\temp\WerBinIch.kix"
	tmpVariant = Shell ( sProgrammAufruf, 6 )  ' SHELL_MIN_NO_FOCUS

2. im KIX-Script (am Ende) das Ergebnis in eine Datei umleiten
Code
	$TempDatei = "c:\temp\WerBinIch.rc"
	$rc = ReDirectOutput("$TempDatei")
	? $ClientName
	$rc = ReDirectOutput("")

3. per LS die Ergebnisdatei lesen

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #11 am: 10.02.09 - 16:18:07 »
Vielen Dank nochmal @BigWim,

habe bezüglich einer plausibelen Textdatei mit dem incl. richtigen Clientnamen folgendes vom Rechenzentrum erhalten und im Zugriff:

************FileAnfang******************
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Lese verbundene Drucker zum Loeschen aus...
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Lade XML-File...
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Validiere XML-File...
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Lese Client Namen aus...
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Client Name ermittelt: U28A0757
09.02.2009 10:30:31 # 09.02.2009 10:30:31 # Fuer den Client U28A0757 sind keine Drucker hinterlegt.
09.02.2009 10:31:01 # 09.02.2009 10:31:01 # tpauto_steuerungV01.VBS - DESKTOPLOGON ausgefuehrt. ENDE

Da ich mich ja als LScript Dussel geoutet habe hier jetzt noch mal meine neu angepasste Frage:
Ich möchte im Masken "PostOpen" einen Agent starten, der mir den Client Namen "U28****" aus dem obrigen Textfile(Textfile.log) ausliesst und dann in ein Feld des geöffneten Dokuments schreibt.
Die Strutur des Textfiles ist immer gleich (Anzahl der Zeilen und Aufbau..)
 Kann mir bitte jemand helfen ??

Danke
Gruß Rainer M.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #12 am: 10.02.09 - 16:53:48 »
Kann mir bitte jemand helfen ??

Sicherlich.  Nur konkrete Fragen brauchen wir.

Bernhard

PS: Du brauchst keinen Agent für diesen Stunt, wenn das File lokal im Zugriff ist.

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #13 am: 10.02.09 - 17:18:08 »
Hallo Bernhard,

JA --> das File liegt lokal (erzeuft duch Sripts) im User Homefilset.
Wahrscheinlich kann man über ein Feldevent das ganze initiieren.

Die LS-Agent Vorschlag meinerseits hat folgenden Hintergrund:
Der Masken "PostOpen" enthält bei mir Formelsprachen Code . Da dachte ich zum füllen des besagten Felds zum Schluss noch ein @Command([RunToolMacro) mit dem Agenten hinterher zu schieben.

Kannst du mir einen Lösungsansatz präsentieren ???!!!!




Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #14 am: 10.02.09 - 20:32:14 »
Okay, wenn Du dort schon (unersetzlichen) Formeldoc hast, dann sollte man einen Agent nehmen.

Es fehlt aber nach wie vor Deine konkrete Frage. Eine komplette Lösung gibt es gegen Einwurf entsprechender Münzen.

Wenn Du einen Einstieg brauchst: Es gibt in der DesignerHelp unter "LotusScript Language"ein Kapitel "File Operations".

Bernhard

Offline RainerMu

  • Frischling
  • *
  • Beiträge: 10
Re: LScript environ Funktion Problem (Daten werden gecacht..)
« Antwort #15 am: 11.02.09 - 09:00:37 »
Ok Bernhard, ;D
dann werde ich (nachdem ich ja jetzt immer ein Textfile mit benutzbarem Inhalt habe..) meine Frage formulieren:

Ich möchte folgendes realisieren.
beim @Command([Compose];"<Maskenname>") soll über das Postopen Event der Maske ein LScript Agent mit gestartet werden, der folgendes tun soll:
Dieser Agent soll ein Textfile mit dem Namen "Printermapping.log" einlesen.
Stösst das Script auf die Zeile mit dem Texinhalt "Client Name ermittelt:" soll der rechts davon stehende Wert (in dem Fall U28a0757) ausgelesen und in in das Feld "Computername" geschrieben werden.

Die Textfilestruktur habe ich ja schon mitgeteilt.
Das Einlesen mit Freefile und eof mit zeilenweiser Ausgabe über MsgBox kann ich ja, aber ich hab keine Ahnung mit Textlistenbearbeitung in LS.

Bernhard,
ich hoffe ich habe bzgl der Formulierung der Frage die richten Münzen geworfen. Kannst du mir bitte weiterhelfen ?  :-:



 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz