hasenkralle
Goto Top

Besitzer eines Druckauftrages ändern

Moin zusammen,

habt ihr eventuell eine Idee, wie man Druckjobs manipulieren kann?

Die Problematik ist, dass alle Ausdrucke einer externen Cloudanwendung mittels Windowsdienst abgerufen werden. Der Dienst wurde von einem Administratoraccount erstellt. Bei jedem Druckjob wird nun allerdings der Adminaccount als Besitzer genannt.

Den Dienst können wir nicht anders einstellen.

Das Einzige was man verändern könnte, wäre dass man den Benutzernamen bzw. das Benutzerkürzel mit im Dokumentennamen angibt.

Meine Idee bzw. Hoffnung ist, dass man nun alle Druckjobs von besagtem Adminaccount abfängt und mittels einer Übersetzungstabelle den Besitzer ändert.

Das Ganze soll erfolgen, da wir diverse Drucker mit einer Follow Me Funktion verwenden. Die Aliasfunktion ergibt hier m.E. keinen Sinn, da dann alle Ausdrucke aus der Cloudanwendung an einem Drucker von einer Person ausgedruckt werden. Da wir über mehrere Etagen verteilt sind, ist das kein Vorteil.

Aktuell lösen wir die Problematik mittels Direktdruck. Sprich man wählt einen Drucker aus und die Ausdrucke werden nicht an "Follow Me" übertragen. Finde die Lösung aber nicht optimal.

Ich freue mich auf eure Ideen.

Beste Grüße
Nils

Content-Key: 7438702476

Url: https://administrator.de/contentid/7438702476

Printed on: May 7, 2024 at 16:05 o'clock

Member: godlie
godlie Jun 06, 2023 updated at 10:26:23 (UTC)
Goto Top
Hallo,

der Dienst wird vom System als Benutzer Administrator ausgeführt, ergo ist Admin der Auftraggeber .....
Da haste kein Chance.

grüße
Member: Crusher79
Crusher79 Jun 06, 2023 at 10:56:56 (UTC)
Goto Top
Hallo,

was noch ggf. gehen würde ist es als PDF ausgeben zu lassen. PDF lassen sich einfach - sofern Textstream vorhanden ist - auslesen und weiterverabeiten.

Damit dann aber der Auftrag bei der richtigen Person ankommt, müsste die wiederum im PDF zu finde sein. Immer. An der gleichen Stelle....

https://www.xpdfreader.com/pdftotext-man.html

Sachebearbeiter: Meyer

Sachbearbeiter:
Meyer

So in der Art. Lässt sich mit PowerShell einfach dann wohin leiten. Hab nur mit Follow Me nicht gearbeitet. Wird das Dokument im User-Kontext aber an die Drucker geschickt, sollten wieder die normalen Vorgaben gelten.

Für pdftotext braucht man nicht unbedingt OCR im Vorfeld. Aus Crystal Reports o.ä. direkt erstelle PDFs sind schon durchsuchbar. Die Verarbeitungszeit ist recht zügig.

Es gibt auch Tools, die den Spooler anhalten und Manipulationen erlauben. Frage ist ob das so sicher ist. Bzw. nur über eine GUI und von Hand läuft. Sehe so nur die Chance durchsuchbare PDF Dokumente rasch analyiseren und dann drucken zu lassen.

Wenn der Aufbau gleich ist und es immer auf der ersten Seite steht ist es schnell gemacht. Gleiches gilt auch für Barcodes. Barcode Reader DLL in PowerShell und Dokumenten Bereich analysieren. Ist fast nur ein Dreizeiler.

Aber dazu kennen wir den Aufbau der Dokumente nicht.

mfg Crusher
Member: Hasenkralle
Hasenkralle Jun 06, 2023 at 11:53:53 (UTC)
Goto Top
Hi Crusher,
deine Idee ist vielleicht gar nicht verkehrt. Ich werde prüfen, ob ich die Druckjobs abgefangen und als PDF in einem Ordner speichern kann. Wir haben eine OCR im Einsatz, die sollte dann in der Lage sein die Namenskürzel in Benutzernamen umzuwandeln. Wenn das gelingt wäre ich ein Schritt weiter und könnte die PDF an einen Drucker weiterleiten - mit dem geänderten Besitzernamen.
Ich lasse euch wissen, ob das funktioniert.
Beste Grüße
Member: Crusher79
Crusher79 Jun 06, 2023 at 12:08:22 (UTC)
Goto Top
Weiterführend:
- PDF direkt drucken
- mfilemon

Bei mfilemon kann man GhostScript hinterlegen und so auch Größen/ Formate manipulieren.

Würde auch natürlich in TIF und dann via OCR durchsuchbares PDF erstellen können. Tesseract wäre da was, wenn ihr kein OCR habt.

Gerade beim Webservice würde ich zunächst klären, ob man durchsuchbare PDF erhält. Dann fällt einiges weg.

An verschiedenen Stellen suchen ist immer schiwerig. Besser wäre es, wenn die Metadaten immer an einen festen Platz angedruckt werden. Ich kenne wie gesagt den Aufbau nicht.

pdftotext kann auch nur Ausschnitte als txt ausgeben. Das würde ggf. die Geschwindigkeiet beim Verarbeiten erhöhen. Aber wir reden hier von normal weiter unter 5 Sekunden Verarbeitungszeit. Bis dann das Dokumente über Follow Me ausgegeben wird, vergehen ja auch Sekunden.

FollowMe füttern: Man kann im User-Kontext wiederum ein Script ausführen, das bei neuen PDF Ausdruck anstößt. Läuft das über den Taskplaner im Benutzer-Kontext, so sollte es wie "Direktdruck" sein. Also FollowMe müsste hier sofort dann funktionieren!

Ich hab damit aus CrystalReports PDF zentral verwursten lassen und bei den Usern abgelegt. Ging sehr gut!
Member: Mr-Gustav
Mr-Gustav Jun 06, 2023 at 14:04:48 (UTC)
Goto Top
Sprechen wir hir vom Windows Standard Drucker Server oder ist es ein Client ?

Eventuell könntest du du die "Druckdatein" bearbeiten und so einen anderen Benutzer zuordnen. Wie kommt der Cloud Printjob denn zum Drucker ? Welche Anwendung ist es denn ?
Besteht die Möglichkeit den Drucker einfach Mahrfach in Form von Drucker_User 1--- Drucker_User99 anzulegen wie man es auch typischerweise mit Farb und SW Druckern macht bzw. Farbe/Brief/A4/A3 usw .... ?
Member: Hasenkralle
Hasenkralle Jun 06, 2023 at 17:29:33 (UTC)
Goto Top
Zitat von @Mr-Gustav:

Sprechen wir hir vom Windows Standard Drucker Server oder ist es ein Client ?

Eventuell könntest du du die "Druckdatein" bearbeiten und so einen anderen Benutzer zuordnen. Wie kommt der Cloud Printjob denn zum Drucker ? Welche Anwendung ist es denn ?
Besteht die Möglichkeit den Drucker einfach Mahrfach in Form von Drucker_User 1--- Drucker_User99 anzulegen wie man es auch typischerweise mit Farb und SW Druckern macht bzw. Farbe/Brief/A4/A3 usw .... ?

Es ist ein Print Server, auf dem ein Dienst ausgeführt wird. Theoretisch könnte man zig Drucker anlegen ... aber der Aufwand ist mir tatsächlich zu groß, die Druckübersicht wird zu unübersichtlich und dann kommt noch die Tatsache dazu, dass wir bei der Cloudanwendung für jeden angeschlossenen Drucker bezahlen ... face-sad

Der vorherige Ansatz scheint zu funktionieren. Ich bin auf einem guten Weg. Werde berichten, sollte es funktionieren.

Danke schon einmal für eure Hinweise, Tipps und Ideen!
Member: Crusher79
Crusher79 Jun 06, 2023 at 19:10:25 (UTC)
Goto Top
Zitat von @Hasenkralle:

Der vorherige Ansatz scheint zu funktionieren. Ich bin auf einem guten Weg. Werde berichten, sollte es funktionieren.

Script und Logik. PS Scripte wurden hier auch schon hundertfach diskutiert. Wenn du noch Probleme hast, kann man dir auch einfach in puncto Logik und PS helfen.

Wichtig sind nur "Anker-Punkte". Das zuverlässig die Metadaten erhalten werden. Was auch immer dir da vorschwebt. Alles andere ist nur Beiwerk. Bzw. kann man Fehlerbehandlung u.ä. ergänzen.

Gerade wenn es automatisch laufen soll, musst du dir ggf. noch Start/ Stop Bedingungen aussuchen. Mit einer LCK File arbeiten o.ä. Dann wird die Sache rund.
Member: Hasenkralle
Hasenkralle Jul 04, 2023 at 22:06:32 (UTC)
Goto Top
Aktueller Stand ist, dass die Dateien je Benutzer in einen Ordner abgelegt werden. Sprich die Sortierung ist erfolgt.
Nun stehe ich vor der Herausforderung, die Dateien wieder an den Drucker zu senden.

@echo off
powershell -Executionpolicy Bypass -Command "(gc 'F:\Test\Druck\*.*') | out-printer '\\Druckserver\Drucker'"  
powershell Move-Item -Path F:\Test\Druck\*.txt -Destination F:\Test\Druck\done

Datei wird mit dem Script gedruckt und auch verschoben. Um das Script im Benutzerkontext auszuführen, müsste ich jeden User bitten das jeweilige Passwort einzugeben. Oder gibt es einen Weg daran vorbei? Oder kann man im Script direkt einen anderen User mitgeben und mit dem Adminpasswort bestätigen?
Member: Crusher79
Crusher79 Jul 05, 2023 updated at 08:26:53 (UTC)
Goto Top
Naja man kann einfach einen Task erstellen, der unter dem jeweiligen Nutzer ausgeführt wird. Anders als bei privilegierter Ausführung musst du kein Kennwort setzen. Du kannst direkt "contoso.com\meyer" eintragen.

Die Tasks lassen sich auch mit PowerShell erstellen. Dann kann jeder User im Hintergrund die Daten abrufen/ drucken.

Würde auf dem Server auch gehen. Wir haben hier viele Startscripte. Da die Nutzer + PC Kombi bekannt ist, ist dann die lokale Einrichtung des Tasks einfacher. Da wir im User-Kontext sind kannst du auch Platzhalt für den Namen nehmen.

$Env:UserName
$Env:UserDomain
$Env:ComputerName

Sowas geht dann alles. Je nachdem wie die Dateien aufbereitet da liegen, kannst du also mit den Variablen die Lokation für dne User erreichen und die Datei dann an den Druckerr - unter dem User - schicken.

Task auf dem User PC. Kann man auch mit PS einrichten. Hat den Vorteil, dass man es komplett automatisieren kann. Auch "Helferlein" die unter dem User alle x-Minuten was ausführen sind so möglich. Wir bewegen uns dann komplett innerhalb des Useres. Es muss nur der PC dazu an sein. Wie es bei normalen Drucken ja auch der Fall sein wird.

05-07-_2023_10-23-46
Member: Hasenkralle
Hasenkralle Jul 05, 2023 at 08:36:59 (UTC)
Goto Top
Der Printserver wird lediglich im Hintergrund betrieben. Die User arbeiten lokal, dementsprechend erfolgt keine Anmeldung auf dem Server. Daher muss ich "Unabhängig von der Benutzeranmeldung ausführen" auswählen, an diesem Punkt wird dann aber das Userpasswort erfordert.
Member: Crusher79
Crusher79 Jul 06, 2023 at 06:08:05 (UTC)
Goto Top
Ja, nein. Dazu solltest du nochmalschreiben, was du gemacht hast!

Wenn die User am PC sitzen, wäre so ein lokaler Task der auf die Server-Dateien zugreift einfacher. Ohne Kennwort kann man dann einfach im User-Kontext auf die Dateien zugreifen.

Wenn Du die User hast, ginge es noch anders. Dateien vom Server auf die User-PCs verteilen und dann von dort drucken. Hatten wir hier mal vor Wochen diskutiert. Normal ist es schöner, wenn die Clients auf die Dateien zugreifen. Wie im Ersten Szenario beschrieben.

Wie liegen die Dateien denn dort vor? Wie differenziert man, welchen User die gehören? Ich habe ja oben darauf hingewiesen, dass man ggf. die PDF analysieren muss. PDFtoText und dann anhand von merken es durch Ordner oder andere PDF Namen den Usern zuzuordnen. Dann kommen die über das lokale Script nur an Ihre Dateien heran. Ordner basiert könnte man sogar über Berechtigungen nachdenken.

Komplett im Background halte ich für nicht zielführend. Der User-Kontext ist nicht da und wie soll dann FollowMe funktionieren?

Server:
- Print to Files (PDF)
- Metadaten/ PDF extrahieren und PS Struktur bauen
-- printed_files\<username>\xxxxx.pdf

Client:
- Normaler Task für den User
- Ggf. mit VBS, PS o.ä. aufpoppen des PowerShell Fensters unterdrücken
- im User-Kontext dann Get-ChildItem \\server\printed_files\<username>\
- Dann es an den Drucker schicken.
- Das es lokal ist und wir die User-Drucker alle haben müsste dann auch FollowMe greifen

So hatte ich mir das vorgestellt.

Dateien "abholen" und ablegen kann ein Background/ Servertask sein. Du musst aber ja die Zuordnung herstellen und dann an die Drucker heran. Das ginge mit Bordmitteln meiner Meinung nach am einfachsten über die die Clients.

Haben leider kein FollowMe. Wenn man es direkt mit User-Bezug an den Printserver schicken könnte und der es auf die Drucker verteilt käme man wohl auch ohne Kennwort aus. So auf der Ebene würde ich über die Clients gehen, die die Dateien sich holen und drucken.

Anmeldung auf den Server:
Nein. Nur indirekt auf die Share, wo die Dateien zum Drucken liegen. Get-Childitem reicht unter PS ja völlig aus und wir haben munter alle Dateien lokal im Zugriff.


So meinte ich das.