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

19. Februar 2013 14:03

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
Zuletzt geändert von rom am 20. Februar 2013 16:24, insgesamt 1-mal geändert.

19. Februar 2013 14:08

[Beitrag aus dem Forum NAV 2009 nach Navision Application Server verschoben.]

Gruß, Natalie
MSDynamics.de-Team

Re: NAS - Wsh - Funktion ausführen

19. Februar 2013 14:14

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

19. Februar 2013 14:14

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

19. Februar 2013 14:31

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

19. Februar 2013 14:45

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

19. Februar 2013 17:11

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

19. Februar 2013 17:18

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

19. Februar 2013 17:25

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

19. Februar 2013 17:52

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

19. Februar 2013 17:57

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

19. Februar 2013 18:07

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

19. Februar 2013 18:12

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

19. Februar 2013 18:21

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

19. Februar 2013 18:30

Kopier mal deine Datei nicht ach LPT3 sondern nach xyz.

Gruß, Fiddi

Re: NAS - Wsh - Funktion ausführen

19. Februar 2013 21:45

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

20. Februar 2013 14:23

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

20. Februar 2013 14:45

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

20. Februar 2013 14:50

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

20. Februar 2013 16:23

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

20. Februar 2013 17:35

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

20. Februar 2013 18:01

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