Seite 1 von 1

[gelöst]NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 14:03
von rom
Hallo,

ich habe ein Problem mit einm Bericht und bin mir nicht sicher, ob es so zu lösen ist.

Dieser Bericht erstellt eine Textdatei, welcher an einen Zebradrucker gesendet wird (Es werden dann Etiketten gedruckt.). Wir haben eine .NET Application, die über den NAS diesen Bericht aufruft. Dieser Bericht funktioniert tadellos in RTC und im CC.

Über die Applikation bzw. NAS funktioniert es leider nicht so ganz. Es wird die Textdatei, welche gesendet werden soll, korrekt erstellt und in einem Tempordner abgelegt. Von diesem Tempordner wird auch gedruckt. Somit kann ich hoffentlich ein Berichtigungsproblem ausschließen. Der User, welcher im NAS hinterlegt wir, hat den Drucken an den LPT gemappt.

Die Datei sende ich mit folgender Codezeile:

Code:

IF ISCLEAR(wsh) THEN
  CREATE(wsh,TRUE,TRUE);

wsh.Exec('cmd.exe /c Copy "'+ FileName+'" LPT3');


Kann der NAS überhaupt eine Windows Shell aufrufen? Was muss ich für den NAS beachten?

Danke für die Infos!
rom

Verfasst: 19. Februar 2013 14:08
von Natalie
[Beitrag aus dem Forum NAV 2009 nach Navision Application Server verschoben.]

Gruß, Natalie
MSDynamics.de-Team

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 14:14
von Markus Merkl
rom hat geschrieben:
Code:
IF ISCLEAR(wsh) THEN
  CREATE(wsh,TRUE,TRUE);

wsh.Exec('cmd.exe /c Copy "'+ FileName+'" LPT3');


Kann der NAS überhaupt eine Windows Shell aufrufen? Was muss ich für den NAS beachten?


Was spricht gegen ein shell(tuirgendwas)?

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 14:14
von Sebastian Pfliegel
Natürlich kann der NAS das. Gibt es eine Fehlermeldung? Ist eventuell die Automation nicht registriert? Berechtigungen auf die Dateien/Ordner?

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 14:31
von rom
Sebastian Pfliegel hat geschrieben:Natürlich kann der NAS das. Gibt es eine Fehlermeldung? Ist eventuell die Automation nicht registriert? Berechtigungen auf die Dateien/Ordner?



Fehlermeldung gibt es keine! Muss ich die Automation noch extra registrieren für den NAS, wenn genau der selbe Code im RTC und CC funktioniert? Berichtigungen passen, Datei wird ja schon vom NAS abgelegt, aber nicht an den Drucker gesendet. Aus dem Eingabeaufforderung kann ich mit den User diese Datei an den Drucker senden....

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 14:45
von Sebastian Pfliegel
Hast du schon im Ereignisprotokoll des PCs nachgesehen? Alle (Fehler-)Meldungen des NAS landen dort. Du könntest den NAS auch mal im Debugger laufen lassen (einfach ein ", debug" an die Eingabeaufforderderung hinten anhängen). Normalerweise dürftest du nichts mehr registrieren müssen (von den Standard-Automations), wenn die Installation nicht gerade korrupt ist.

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 17:11
von rom
Sebastian Pfliegel hat geschrieben:Du könntest den NAS auch mal im Debugger laufen lassen (einfach ein ", debug" an die Eingabeaufforderderung hinten anhängen).


Wie ist da die genau Syntax?

Code:
 IF ISCLEAR(wsh) THEN
   CREATE(wsh);
  wsh.Exec('cmd.exe /c Copy "'+ FileName+'" LPT3 debug') ;


Und was sollte ich als Ergebnis erhalten?

Danke!

vg

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 17:18
von fiddi
Hallo,

1. Hat der Benutzer unter dem der NAS läuft Zugriff auf die entsprechenden Dateien und Verzeichnisse?
2. Warum benutzt du nicht das WSH- Filesystem-Objekt, das kann schon Dateien kopieren, da musst du nicht erst ein cmd.exe aufrufen.

Gruß, Fiddi

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 17:25
von rom
fiddi hat geschrieben:1. Hat der Benutzer unter dem der NAS läuft Zugriff auf die entsprechenden Dateien und Verzeichnisse?

Ja, der NAS legt sich ja schon selber die Datei in das entsprechende Verzeichnis....

fiddi hat geschrieben:2. Warum benutzt du nicht das WSH- Filesystem-Objekt, das kann schon Dateien kopieren, da musst du nicht erst ein cmd.exe aufrufen.


Weil es sonst im NAV nicht funktioniert..

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 17:52
von fiddi
Wo kommt denn 'LPT3' her, hasst du 3 parallele Schnittstellen in dem PC? Oder legst du die mit "Mode" oder "net use" an? In letzterem Fall könnten die nur für den Benutzer sichtbar sein, der den Befehl aufgerufen hat, nicht der, der den Service gestartet hat.

Gruß, Fiddi

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 17:57
von rom
fiddi hat geschrieben:Wo kommt denn 'LPT3' her, hasst du 3 parallele Schnittstellen in dem PC? Oder legst du die mit "Mode" oder "net use" an? In letzterem Fall könnten die nur für den Benutzer sichtbar sein, der den Befehl aufgerufen hat, nicht der, der den Service gestartet hat.

Gruß, Fiddi



Ich habe für den User, welcher im Dienst vom NAS hinterlegt ist, das LPT3 mit Net use und persistent:yes angelegt.

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 18:07
von fiddi
versuch es erst mal mit einer normalen Datei, wenn das funktioniert, hat du das eigentliche Problem gefunden.

Gruß, Fiddi

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 18:12
von rom
fiddi hat geschrieben:versuch es erst mal mit einer normalen Datei, wenn das funktioniert, hat du das eigentliche Problem gefunden.


Wie meinst du das?

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 18:21
von rom
ICh glaube ich habe dir Ursache:

Im Eventlog kommt vom Desktop Windows Manager folgende Meldung:

"Der Desktopfenster-Manager konnte nicht gestartet werden, da kein zusammengestelltes Design verwendet wird.!

Ereignis ID 9003-

Es passt mit der Zeit ungefährt mit der Ausführung des Codes zusammen...
Kann das stimmen?

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 18:30
von fiddi
Kopier mal deine Datei nicht ach LPT3 sondern nach xyz.

Gruß, Fiddi

Re: NAS - Wsh - Funktion ausführen

Verfasst: 19. Februar 2013 21:45
von Sebastian Pfliegel
rom hat geschrieben:Wie ist da die genau Syntax?

Code:
 IF ISCLEAR(wsh) THEN
   CREATE(wsh);
  wsh.Exec('cmd.exe /c Copy "'+ FileName+'" LPT3 debug') ;


Und was sollte ich als Ergebnis erhalten?


So war das nicht gemeint :-D
Das ", debug" hängst du an den Aufruf von der nas.exe bzw. nassql.exe statt dem Parameter für die Installation als Service.

Die Meldungen vom NAS kommen auch immer von dem jeweiligen Dienst natürlich. Daher glaube ich kaum, dass der Desktopfenster-Manager etwas damit zu tun haben könnte. Ich würde jetzt auch wie von fiddi angesprochen die Datei die du an den Drucker "kopieren" möchtest einfach an einen anderen Dateipfad hinkopieren. Anstatt des copy-Befehls könnte dir eventuell ein print zusagen.

Re: NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 14:23
von rom
Sebastian Pfliegel hat geschrieben:
rom hat geschrieben:Wie ist da die genau Syntax?

Code:
 IF ISCLEAR(wsh) THEN
   CREATE(wsh);
  wsh.Exec('cmd.exe /c Copy "'+ FileName+'" LPT3 debug') ;


Und was sollte ich als Ergebnis erhalten?


So war das nicht gemeint :-D
Das ", debug" hängst du an den Aufruf von der nas.exe bzw. nassql.exe statt dem Parameter für die Installation als Service.

Die Meldungen vom NAS kommen auch immer von dem jeweiligen Dienst natürlich. Daher glaube ich kaum, dass der Desktopfenster-Manager etwas damit zu tun haben könnte. Ich würde jetzt auch wie von fiddi angesprochen die Datei die du an den Drucker "kopieren" möchtest einfach an einen anderen Dateipfad hinkopieren. Anstatt des copy-Befehls könnte dir eventuell ein print zusagen.


Ich habe es nun mal versucht zu debuggen, da kommt keine Fehlermeldung oder ähnliches...

Re: NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 14:45
von Sebastian Pfliegel
Gut, dann geh ich mal stark davon aus, dass er das LPT3 nicht wirklich mag ... Nimm doch wirklich mal als Ziel sowas wie "C:\". Schau dir mal den Befehl an: PRINT. Vielleicht funktioniert dieser besser als der COPY.

Re: NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 14:50
von rom
Sebastian Pfliegel hat geschrieben:Gut, dann geh ich mal stark davon aus, dass er das LPT3 nicht wirklich mag ... Nimm doch wirklich mal als Ziel sowas wie "C:\". Schau dir mal den Befehl an: PRINT. Vielleicht funktioniert dieser besser als der COPY.


Also du meinst, einfach von "c:\temp", wo es jetzt liegt, wo anders hinkopieren?

Re: NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 16:23
von rom
Ich habe es nun gelöst.

Es lag daran, dass das Consolenfenster nicht öffnen konnte. Ich habe beim NAS User den Dienst gestarte und dann ging es..
Bzw. versuchen wir es über wsh.exec und wsh.rund auszuführen.


Danke für die Hilfe
lg

Re: [gelöst]NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 17:35
von Sebastian Pfliegel
Hmm, ihm hat also der cmd.exe /c nicht gefallen? Naja, den kann man ja getrost weglassen.

Re: [gelöst]NAS - Wsh - Funktion ausführen

Verfasst: 20. Februar 2013 18:01
von fiddi
Hmm, ihm hat also der cmd.exe /c nicht gefallen? Naja, den kann man ja getrost weglassen.


Bei normalen Dateinamen schon, wenn man aber Devices verwendet, bin ich mir da nicht so sicher.

Gruß, Fiddi