Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PDFCreator - PsExec - RDP

Frage Microsoft Windows Tools

Mitglied: AmanoGijn

AmanoGijn (Level 1) - Jetzt verbinden

15.02.2012, aktualisiert 15:20 Uhr, 4049 Aufrufe, 9 Kommentare

Wir verwenden einen ESX Server, auf welchem Virtuelle Windows 7 x64 Maschinen für die Aussendiensmitarbeiter, laufen. Die AD - Mitarbeiter greifen per RDP auf diese Maschinen zu. Unter anderem benötigen diese Mitarbeiter den PDFCreator welcher auf unserem Druckserver freigegeben wurde.
Der PDFCreator wird dazu verwendet, aus einem Word, Excel oder aus einer CAD - Zeichnung ein PDF zu generieren welches anschliessend dirket in unsere Dokumentmanagement Software importiert wird.

Guten Tag liebe Administrator.de Mitglieder

Vorerst einige Informationen:

Mehrere physikalische Windows XP Clients
Mehrere physikalische Windows 7 Clients
2x ESX Server für Virtuelle Server (DNS, DHCP, AD, Druck, usw.)
1x ESX Server auf welchem Virtuelle Windows 7 Clients für die Aussendienst Mitarbeiter zur Verfügung gestellt werden.

Problematik:

Wir verwenden nun schon einige Monate das kostenlose Tool: PDFCreator. Dieses Tool stellt einen PDF - Drucker zur Verfügung welcher über einen Virtuellen Server für ALLE Mitarbeiter freigegeben wurde.
Dieser Drucker ist dafür zuständig, Dokumente wie zum Beispiel CAD Zeichnungen direkt als PDF in unser Dokumentmanagementsystem zu impotieren. Das ganze funktioniert wie folgt:

START ----------

Computer A: Druckauftrag an Server A

Server A: PDF wird generiert und auf Filer abgelegt.

Server A: Nach Abschluss der konventierung von xx.xx in PDF wird ein VBA Script ausgeführt, welches eine Teilapplikation des Dokumentensystems mit Administratorenrechte per PsExec anstuppst.
Dieses ist für den Importvorgang sowie für die richtige Zuordnung in dem Dokumentensystem zuständig.

Computer A: Prozess der Teilapplikation wird unter dem User: Administrator gestartet. Einige Sekunden später erscheint das Dokument in der Ordnerablage im Dokumentenmanagement.

ENDE -----------

Bei allen Mitarbeitern, welche hier in-house arbeiten, funktioniert dieser Vorgang problemlos. Egal ob Windows XP oder Windows 7. Bei Mitarbeitern, welche extern arbeiten und über RDP auf die Virtuelle Maschine zugreifen, funktioniet es nicht.
Alle Benutzer melden sich natürlich mit ihrem eigenen Profil an physischen sowie auch an den virtuellen Computern an.

Ich konnte während einigen Tests beobachten, dass der Prozess PsExec sowie auch die Teilapplikation jeweils als Administrator ausgeführt werden. Das ist auch richtig so. Was in meinen Augen jedoch ein Problem darstellt, ist, dass auf der RDP Session keine Applikationen von zur Zeit nicht angemeldeten Benutzern durchgeführt werden können. Liege ich da evtl. richtig?

Ich bitte euch um Hilfe Bin am verzweifeln!

Mit freundlichen Grüssen aus der Schweiz

AmanoGijn
Mitglied: 60730
15.02.2012 um 14:44 Uhr
moin,
Zitat von AmanoGijn:
Wir verwenden nun schon einige Monate das kostenlose Tool: PDFCreator.
  • welche Version / wie installiert und auf welchem OS?

Dieser Drucker ist dafür zuständig, Dokumente wie zum Beispiel CAD Zeichnungen direkt als PDF in unser Dokumentmanagementsystem zu impotieren.
  • Naja - wohl eher um PDFs zu erzeugen, die mittels Script in das DMS importiert werden...
Das ganze funktioniert wie folgt:
  • neee - zeig mal lieber dein Script...

Bei allen Mitarbeitern, welche hier in-house arbeiten, funktioniert dieser Vorgang problemlos. Egal ob Windows XP oder Windows 7.
Bei Mitarbeitern, welche extern arbeiten und über RDP auf die Virtuelle Maschiene zugreifen, funktioniet es nicht.
  • moooooooooment....
  • Wenn einer über welchen Weg auch immer per rdp auf einen Server /RDP zugreift, dann ist der doch ein "lokaler" Benutzer...
Was in meinen Augen jedoch ein Problem darstellt, ist, dass auf der RDP Session keine Applikationen von zur Zeit nicht angemeldeten Benutzern durchgeführt werden können
  • ähhh kannst du mir das mal aufmalen? Hört sich irgendwie nach "Wie kann ich den Ast absägen, auf dem ich sitze, wenn ich im Bett liege" an..
Liege ich da evtl. richtig?
  • ich dachte, das script wird auf dem Server gestartet?

Ich bitte euch um Hilfe Bin am verzweifeln!
  • und ich kriech die Griese, wenn ich Maschiene lesen muß
Bitte warten ..
Mitglied: AmanoGijn
15.02.2012 um 15:17 Uhr
Hey TimoBell

Vielen Dank für die Antwort.

Es ist die PDFCreator Version 1.2.0 installiert und läuft auf einem Windows 2008 R2 Server.

Nach dem erstellen des PDF Dokuments, wird folgender Script ausgeführt:

01.
On Error Resume Next 
02.
 
03.
Const WbemAuthenticationLevelPktPrivacy = 6 
04.
 
05.
 
06.
 
07.
strUser = "Domain\Administrator" 
08.
strPassword = "*****" 
09.
strNamespace = "root\cimv2"   
10.
strFile = Wscript.Arguments("0") 
11.
strComputer = Wscript.Arguments("1") 
12.
strImport = "\\Server\xxx\xxx\xxx.exe Archive Import Dokument" 
13.
 
14.
 
15.
'Wiederholt so lange Host erreichbar ist bzw nicht unbekannter host als Meldung erscheint! 
16.
do 
17.
 
18.
If strComputer = "" Then 
19.
do 
20.
strComputer = InputBox("Please enter correct Computername: ") 
21.
 
22.
loop until strComputer <> "" OR strComputer = False 
23.
End If 
24.
 
25.
'Erreichbarkeit des PC's testen - Ping================== 
26.
 
27.
Set objShell = CreateObject("WScript.Shell") 
28.
strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer & "" 'Ping ausführen 
29.
Set objExecObject = objShell.Exec(strCommand) 
30.
'======================================================= 
31.
Do While Not objExecObject.StdOut.AtEndOfStream 
32.
strText = objExecObject.StdOut.ReadAll() 
33.
If Instr(strText, "Anforderung") > 0 Then 
34.
objshell.popup "Host " & strComputer & " nicht erreichbar!",3 
35.
elseif Instr(strText, "Unbekannter Host " & strComputer & ".") <> 0 then 
36.
objshell.popup "Host " & strComputer & " nicht erreichbar!",3 
37.
end if 
38.
loop 
39.
loop while Instr(strText, "Unbekannter Host " & strComputer & ".")<>0 OR Instr(strText, "Anforderung") > 0 
40.
'======================================================= 
41.
 
42.
'Verbindung zum WMI Namespace herstellen================ 
43.
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
44.
Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword) 
45.
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy 
46.
'======================================================= 
47.
 
48.
Function GetWMIServices() 
49.
Set GetWMIServices = GetObject("winmgmts:" _ 
50.
& "{impersonationLevel=impersonate}!\\" & strComputer & strNamespace) 
51.
End Function 
52.
 
53.
 
54.
Set objWMIService = GetWMIServices() 
55.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
56.
 
57.
Set objShell = WScript.CreateObject("WScript.Shell") 
58.
retval = objshell.run("C:\PDFCreatorImport\sleep.bat",0,True) 
59.
 
60.
For Each objItem In colItems 
61.
OSBuild = (objItem.BuildNumber) 
62.
 
63.
 
64.
if OSBuild = "2600" Then 
65.
 
66.
'Windows XP============================================= 
67.
 
68.
Set WSHShell = CreateObject("WScript.Shell") 
69.
WSHShell.run ("C:\PDFCreatorImport\PsExec.exe \\"& strComputer &" -u "& strUser &" -p "& strPassword &" -e -i 0 "& strImport & " " & Chr(34) & strFile & Chr(34)) 
70.
 
71.
'Windows 7 RC=========================================== 
72.
 
73.
elseif OSBuild >= "7600" Then 
74.
 
75.
Set WSHShell = CreateObject("WScript.Shell") 
76.
WSHShell.run ("C:\PDFCreatorImport\PsExec.exe \\"& strComputer &" -u "& strUser &" -p "& strPassword &" -e -i 1 "& strImport & " " & Chr(34) & strFile & Chr(34)) 
77.
 
78.
 
79.
End if 
80.
 
81.
'Sleep.bat aufrufen===================================== 
82.
 
83.
Set objShell = WScript.CreateObject("WScript.Shell") 
84.
retval = objshell.run("C:\PDFCreatorImport\sleep.bat",0,True) 
85.
 
86.
'xxx.pdf löschen======================================== 
87.
 
88.
'Datei löschen 
89.
Set fso = CreateObject("Scripting.FileSystemObject") 
90.
fso.GetFile(strFile).Delete 
91.
 
92.
Next
Die Benutzer melden sich über ein Servergespeichertes Profil an einer virtuellen MASCHINE an. Logisch ist es in dem Moment "lokal" abgespeichert. Doch der Benutzer wurde nicht lokal erstellt sondern im zentralen AD.
Da hast du Recht, das Scrpt wird auf dem Server gestartet. Mithilfe des Scripts jedoch, wird ein xx.exe File auf dem Zielcomputer ausgeführt.

Mit freundlichen Grüssen
Amano
Bitte warten ..
Mitglied: 60730
15.02.2012 um 16:37 Uhr
Salve,

  • ähh.. nee leider doch noch nicht...

Nochmal - Client hat einen freigegebenen und als Printserver eingerichteten PDF Creator.
(man kann den entweder /oder installieren - unabhängig davon, ob man den später freigibt oder nicht.)
Man sollte den aber für diesen Zweck als Standalone (wie auch immer der Punkt sich jetzt nennt) installieren.

Soweit so klar?

Nur - wie wird dieses Script aufgerufen?

strFile = Wscript.Arguments("0")  
strComputer = Wscript.Arguments("1") 
Das verstehe ich nicht - null ist klar, das ist die erzeugte pdf, aber was ist 1?
strFile = Wscript.Arguments("0")  
strComputer = Wscript.Arguments("1")  
If strComputer = "" Then do  strComputer = InputBox("Please enter correct Computername: ") 
Der Server? - kanns ja nicht sein - auf dem läuft ja das script
Der Client? - Auch eher unwahrscheinlich, denn Zeile 25...
'Erreichbarkeit des PC's testen - Ping
Der rechner, der den Druckjob erzeugt hat, muß doch an sein - wozu diese Abfragerei?

Nochmal zum mitdenken...

  • Ich hab ne simple Batch, die der PDF Creator nach jedem Drucken ausführt.
  • Die Datei liegt / wird auf - einem Server erzeugt und liegt da.
  • Wenn die datei vorhanden ist - ein paar kleine Spielechen und tests, ob die PDF "sauber" ist - schiebt der die in ein Archivsystem und das Archivsystem erkennt anhan einer Ordnerüberwachung, das es reagieren muß.

So mache ich das - war zwar auch "etwas" aufwändiger - aber im vergleich zu dem Scriptteil ein kurzes husten über die Tastatur.
(Und eine plausiblitätsprüfung hab ich auf die schnelle gar nicht gefunden)

Und eine Nachfrage hab ich noch:
Was macht denn die sleep.bat?

PS:
Logisch ist es in dem Moment "lokal" abgespeichert.

Nein - die Kiste, die der Benutzer bedient steht "lokal" das ist etwas ganz anderes.
Du merkst ich bin kleinlich, das kommt davon, wenn man sich öfters bücken muß
Bitte warten ..
Mitglied: bastla
15.02.2012 um 21:43 Uhr
... bzw
Was macht denn die sleep.bat
... was ein
WScript.Sleep
nicht kann?

BTW: In
Wscript.Arguments("0")
sind ziemlich genau 2 Anführungszeichen entbehrlich (was das vergleichsweise "gutmütige" VBS aber kommentarlos durchgehen lässt) ...

Grüße
bastla
Bitte warten ..
Mitglied: AmanoGijn
16.02.2012 um 09:09 Uhr
Guten Morgen Zusammen

Anhand folgender Grafik ist der Ablauf evtl. besser Verstänndlich:

http://www.picfront.org/d/8wwJ

Die xxx.exe benötigt den Filenamen und den Computernamen, desshalb die zwei Argumente.
Dem PDFCreator kann angegeben werden, was für Parameter übergeben werden sollen. Filename wird als erstes übergeben deshalb Wert 0. Computername wird als zweites übergeben deshalb Wert 1.

strFile = Wscript.Arguments("0")
strComputer = Wscript.Arguments("1")

Werden die Zwei Variabeln per MsgBox ausgegeben steht der erwartete und korrekte Wert darin.

Die sleep.bat Datei ist dafür da, den Löschvorgang nach dem Importvorgang um 7 Sekunden zu verzögern, so das dass File nicht vor dem Importvorgang gelöscht wird.

Vielen Dank und freundliche Grüsse
Amano
Bitte warten ..
Mitglied: 60730
16.02.2012 um 12:04 Uhr
Salve,

also nochmal...

  • angenommen die virtuellen Kisten sind W7 und haben "normale" Einstellungen, dann greift dein VBS daneben, weil ein Ping in die Hose geht.
Kannst du vom Server aus einen W7 Rechner anpingen?

Und dann - dieses obere Beispiel mit "mein PDFCreator" das ist keine Fantasie, sondern real hier am laufen.

Von daher - ich verstehs nicht wirklich...

Client erzeugt PDF und die soll in einem anderen System importiert werden.
Nur die PDF und sonst nix?

Wenn ja - dann hab ich da echt ein Problem mit der logik dahinter, denn das geht viel einfacher, wenn der Job, den der PDF Creator nach dem "Ausdruck" anwirft das alles steuert.
Kein PSexec vom Client aus an den DSM Server, sondern alles vom Printserver, wo das PDF auch liegt(erzeugt wird)
Bitte warten ..
Mitglied: AmanoGijn
16.02.2012 um 12:43 Uhr
Hey

Also, die W7 Rechner sind vom Server pingbar. Wieso soll es also in die Hosen gehen?

Ich muss es vielleicht anderst definieren. Auf dem Server auf welchem der PDFCreator läuft, befindet sich ein VBS Script. Dieses VBS Script prüft das OS und ruft anschliessend die xxx.exe auf, welche sich auf dem DMS Server befindet.
Diese xxx.exe wird anschliessend mithilfe von PsExec mit Administratorenrechte auf dem Virtuellen W7 Rechner ausgeführt. Diese xxx.exe wurde von dem Hersteller des DMS mitgeliefert und ist für den Import von Dokumenten zuständig.

Ich weis ja nicht mit welchem DMS System ihr arbeitet. Fakt ist, dass es bei den internen Windows 7 Rechnern, welche exakt des externen entsprechen, einwandfrei funktioniert. (Windows 7 Build 7601).
Der einzige Unterschied ist, dass auf die virtuellen Rechner per RDP zugegriffen wird. Selbst ein Zugriff auf Session 0 bringt kein Erfolg. (mstsc /v:*Hostname* /console)

Ich habe heute morgen einen Vergleich zwischen einem internen und externen Client gemacht. Drucke ich von dem internen Client ein Dokument auf dem PDFCreator aus, vergehen keine 5 Sekunden und es erscheint die gewünschte xxx.exe im Taskmanager und der Importvergang wird durchgeführt.
Beim exterenen virtuellen Client wird das PDF Dokument zwar erstellt und auf dem Filer abgelegt jedoch wird es nicht importiert. Im Taskmanager erscheint auch kein Prozess welcher das ausführen der xxx.exe bestätigen würde.
Interessant ist, dass wenn ich mich direkt über die vSphere Konsole auf den Client einlogge, mit dem selben Benutzer, welcher keine Administratorenrechte besitze, funktioniert es.

Meiner Meinung nach kann es deshalb nur etwas mit RDP oder PsExec zu tun haben.

Wie seht ihr das?

Gruss und einen schönen Mittag
Amano
Bitte warten ..
Mitglied: AmanoGijn
16.02.2012 um 14:20 Uhr
Hallo Miteinander

Die Lösung wurde gefunden. Die xxx.exe welche mit Psexec gestartet wird, wurde in der Session ID 1 gestartet, das ist falsch!
Bei einem RDP Zugriff wird jedoch Session ID 2 verwendet. Aus diesem Grund konnte ich den Prozess als Administrator auch erkennen.

Vielen Dank für eure manchmal auch "kleinlichen" Antworten ;D

Gruss
Amano
Bitte warten ..
Mitglied: bastla
16.02.2012 um 14:39 Uhr
Hallo AmanoGijn!
Vielen Dank für eure manchmal auch "kleinlichen" Antworten ;D
Da ich mich angesprochen fühle: Gerne - war nach dem Motto "Jeder so gut, wie er kann" (und zumindest den Aufruf der "Sleep.bat" könntest Du wirklich durch ein einfaches
WScript.Sleep 7000
ersetzen) ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Tools
Zwischenspeicher TS RDP-Verbindung (3)

Frage von Yannosch zum Thema Windows Tools ...

Windows Netzwerk
Kein RDP über VPN per MS-TSC möglich (8)

Frage von survial555 zum Thema Windows Netzwerk ...

Windows Server
Drucken via RDP, Papier kommt aus falschem Schacht

Frage von torcolato zum Thema Windows Server ...

Windows Server
Lokale Serveranmeldung via RDP? (9)

Frage von ooAlbert zum Thema Windows Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...