Jump to content

Pwershell Dateien aus Verzeichnis drucken

Empfohlene Beiträge

Hallo zusammen,

nehmen wir einmal an, es gibt einen Etikettendrucker an der nicht direkt aus dem ERP angesteuert werden kann weil es keine passenden Unix Treiber gibt. Nehmen wir weiter an, es gibt keine Alternative zu diesem Drucker, aber auch kein Problem das Teil unter Windows zum laufen zu bekommen. Außerdem kann das ERP System die zu druckenden Dateien als .pdf in einem Verzeichnis ablegen... Also drucken wir eben über den Umweg "Datei in Ordner ablegen".

Hierzu habe ich mir ein kleines Powershellscript gebastelt, welches auch prinzipiell funktioniert, allerdings nur wenn ich einen lokalen Drucker auswähle, nicht mit einem Netzwerkdrucker.

Der Drucker ist ein MuFu Gerät, welches ich mir lokal über die IP gemapt habe. Auf dem Printserver gibt es das Gerät 3x (s/w auf Normalpapier, Farbe auf Normalpapier, Briefpapier). Ich möchte auf dem Drucker "\\printserver\Druckername-Schacht1" drucken, aber ich bekomme es einfach nicht hin, der Drucker "Druckername lokal" klappt problemlos. Daher vermute ich, dass ich falsch mit dem Drucker reden möchte.

$files = Get-ChildItem “C:\Test\*.*”
$printer = "iR-ADV C5535"
#$printer = "\\printserver\Drucker Schacht1"
#$printer = "Drucker Schacht1"
#$printer = "Drucker Schacht1 an printserver"

ForEach ($file in $files){
Start-Process –FilePath $File.FullName –Verb PrintTo -PassThru $printer | %{sleep 10;$_} | kill
#Remove-Item ($file).FullName
}

Alle 4 Drucker sind das identische Gerät,

  • $printer = "iR-ADV C5535" --> ist der Drucker lokal eingerichtet
  • #$printer = "\\printserver\Drucker Schacht1" --> ist die Freigabe auf dem Printserver
  • #$printer = "Drucker Schacht1" --> ist der Name des Druckers
  • #$printer = "Drucker Schacht1 an printserver" --> so wird er mir in Windows unter Geräte und Drucker angezeigt

Was ist falsch? Wie muss ich den Netzwerkdrucker ansprechen dass er mich versteht?

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenn es lokal funktioniert: Zur Not kannst Du den Drucker einfach nochmal pseudo-lokal einrichten - "Loken Drucker hinzufügen" und dann als Druckerport den UNC Pfad über "Anschluss hinzufügen"->"Local port" wählen, also als "Local port"

\\printserver\Drucker Schacht1

eingeben..

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Berechtigungsproblem schließe ich aus, da es mein Account und mein Standarddrucker war mit dem ich getestet habe. Auch mit DEM Adminaccont hat es nicht geklappt.

Und nein, einfach den Standarddrucker nehmen ist leider keine Lösung, da der betreffende Drucker an keinem Arbeitsplatz Standard sein sollte.

So wie es ausschaut wird das Script nachher auf dem Printserver laufen, dann hab ich das Problem mit dem Netzwerkdrucker eh nicht, aber ich will wissen was da jetzt das Problem sein soll. Es ist ja jetzt nicht soo abwegig Daten per Powershell auf einem bestimmten Netzwerkdrucker ausdrucken zu wollen...

Meine Vermutung ist, dass meine Syntax beim ansprechen des Druckers einfach falsch ist, und dieser nicht weiß dass er gemeint ist

"Out-Printer" wird wohl leider rausfallen, da dieses cmdlet wohl nicht bei .pdf Dateien funktionieren soll (nicht getestet, nur gelesen)

Ps: Wenn ein Mod hier rein schaut, ich möchte gerne ein "O" kaufen für den Titel

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo @Maniska

zwei Dinge sind mir noch eingefallen:

  • Du könntest mal versuchen dem Start-Process explizit ein Credential-Objekt mitzugeben
  • Du solltest auch mal den Schalter "LoadUserProfile" angeben. Ich bin mir nicht ganz sicher, aber ich meine, dass lokale Drucker dem System ("HKEY_LOCAL_MACHINE - SYSTEM - CurrentControlSet - Control - Print" irgendwo da.) zugeordnet sind. Die Netzwerkdrucker sind aber im Userprofil ("HKEY_CURRENT_USER - Printers - Connections" müsste das sein) gespeichert.
Wenn das nichts hilft, dann würde ich im nächsten Schritt mal den Netzwerktraffic mitschneiden und gucken, ob irgendwas zum Printserver geschickt wird. Das hilft dann das Problem einzugrenzen.
 
mfg Hendrik232

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich hab' das gerade mal nachgestellt. Mit einem TXT File und dem Freigabenamen (\\<Servername>\<Freigabe>) funktioniert das bei mir ohne Probleme.

Ist der angegebene Freigabename tatsächlich der, der im System gemapped ist? (get-printer)

Hast du da tatsächlich Leerzeichen im Namen? Bei mir konnte die PS das dadurch gerade nicht richtig auflösen.
Geholfen hat: '"\\<Server>\Druckername mit Leerzeichen"' (also einfaches Hochkomma davor und dahinter)

Grüße

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Danke, die Hochkommata haben es erleuchtet (also als ich die Teile dann an der richtigen Stelle hatte...:ph34r:). Mistige Dinger, die sehen aber auch alle gleich aus^^

Blöd, dass Powershell bei lokalen Ressourcen mit Leerzeichen kann, im UNC Pfad aber nicht.

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung