Mit Powershell Drucker hinzufügen

Mitglied: Ralus67

Ralus67 (Level 1) - Jetzt verbinden

07.01.2021 um 10:11 Uhr, 320 Aufrufe, 6 Kommentare

Hallo Community

Ich versuche über Powershell einen Drucker zu erstellen. Leider wird das Druckerobjekt nicht erstellt.
Was könnte an meinem Skript falsch sein?

Invoke-Command -ComputerName $env:computername -Scriptblock {rundll32 printui.dll,PrintUIEntry /dl /n "DYMO LabelWriter 450 Twin Turbo"}
Invoke-Command -ComputerName $env:computername -Scriptblock {Cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_192.168.33.53 -h 192.168.33.53 -o raw -n 9100}
Start-Sleep -Seconds 5
Invoke-Command -ComputerName $env:computername -Scriptblock {rundll32 printui.dll,PrintUIEntry /if /b "DYMO LabelWriter 450 Twin Turbo" /f "$PSScriptRoot\Drivers\DYMO.inf" /r "IP_192.168.33.53" /m "DYMO LabelWriter 450 Twin Turbo"}


Im Voraus vielen Dank für Eure Hilfe
Ralus67
Mitglied: Ralus67
07.01.2021 um 12:08 Uhr
Als weitere Info. Die Treiber sowie der Port mit definierter IP-Adresse werden installiert bzw. erstellt.

Lediglich der letzte Befehl
Invoke-Command -ComputerName $env:computername -Scriptblock {rundll32 printui.dll,PrintUIEntry /if /b "DYMO LabelWriter 450 Twin Turbo" /f "$PSScriptRoot\Drivers\DYMO.inf" /r "IP_192.168.33.53" /m "DYMO LabelWriter 450 Twin Turbo"}

erstellt mir kein Drucker Objekt.

Führe ich jedoch den Befehl in einer cmd aus, dann funktioniert es.
rundll32 printui.dll,PrintUIEntry /if /b "DYMO LabelWriter 450 Twin Turbo" /f "$PSScriptRoot\Drivers\DYMO.inf" /r "IP_192.168.33.53" /m "DYMO LabelWriter 450 Twin Turbo"

Hat jemand eine Lösung?
Bitte warten ..
Mitglied: mayho33
07.01.2021, aktualisiert um 12:50 Uhr
Zitat von Ralus67:

Hallo Community

Ich versuche über Powershell einen Drucker zu erstellen. Leider wird das Druckerobjekt nicht erstellt.

Wen es in CMD so funktioniert, dann übergib das ganze doch einfach an die Comspec:


Noch ein kleiner Hinweis:

pnputil installiert dir für alle Benutzer den Treiber. Du könntest also die Installation der Treiber und das Anlegen des Druckers aufteilen:

Grüße!
Bitte warten ..
Mitglied: Ralus67
07.01.2021 um 13:13 Uhr
Hallo Mayho33

Leider funktioniert das Sript nicht. Ich habe es folgendermassen implementiert.

Invoke-Command -ComputerName $env:computername -Scriptblock {Cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r IP_192.168.33.53 -h 192.168.33.53 -o raw -n 9100}

Start-Sleep -Seconds 5

$toInvoke = ("/c $($env:computername) rundll32 printui.dll,PrintUIEntry /if /b " + [char]34 + "DYMO LabelWriter 450 Twin Turbo" + [char]34 + " /f $PSScriptRoot\Drivers\DYMO.inf /r IP_192.168.33.53 /m " + [char]34 + "DYMO LabelWriter 450 Twin Turbo" + [char]34)

$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$p = New-Object System.Diagnostics.Process
$pinfo.UseShellExecute = $false
$pinfo.FileName = "cmd.exe"
$pinfo.Arguments = $toInvoke


$p.StartInfo = $pinfo
$p.Start() | Out-Null
Bitte warten ..
Mitglied: mayho33
07.01.2021 um 13:18 Uhr
Zitat von Ralus67:
Leider funktioniert das Sript nicht. Ich habe es folgendermassen implementiert.

Sollte ja nur ein Example sein. ;-) face-wink
Bitte warten ..
Mitglied: Ralus67
07.01.2021, aktualisiert um 13:36 Uhr
Irgendwo ist hier ein Fehler im Skript

Da wird nichts ausgeführt.


Verb :
Arguments : /c AS01-LAB rundll32 printui.dll,PrintUIEntry /if /b "DYMO LabelWriter 450 Twin Turbo" /f
C:\Temp\Dymo_LabelWriter450_8.3.0.443_001\Deploy\P_ML_x99\Drivers\DYMO.inf /r IP_192.168.33.53 /m "DYMO LabelWriter 450 Twin Turbo"
CreateNoWindow : False
EnvironmentVariables : {Path, PROCESSOR_IDENTIFIER, TEMP, ProgramW6432...}
Environment : {[Path, C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\myNet\;C:\Users\Ralus\AppData\Local\Microsoft\WindowsApps], [PROCESSOR_IDENTIFIER, Intel64 Family 6 Model 94 Stepping 3, GenuineIntel], [TEMP,
C:\Users\Ralus\AppData\Local\Temp], [ProgramW6432, C:\Program Files]...}
RedirectStandardInput : False
RedirectStandardOutput : False
RedirectStandardError : False
StandardErrorEncoding :
StandardOutputEncoding :
UseShellExecute : False
Verbs : {open, runas, runasuser}
UserName :
Password :
PasswordInClearText :
Domain :
LoadUserProfile : False
FileName : cmd.exe
WorkingDirectory :
ErrorDialog : False
ErrorDialogParentHandle : 0
WindowStyle : Normal




PS C:\WINDOWS\system32> echo $p

Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0 0


PS C:\WINDOWS\system32>
Bitte warten ..
Mitglied: mayho33
07.01.2021 um 14:06 Uhr
Schau die mal diese CmdLets an:

https://docs.microsoft.com/en-us/powershell/module/printmanagement/add-p ...

https://docs.microsoft.com/en-us/powershell/module/printmanagement/add-p ...

Wenn du also mal den Treiber bereitgestellt hast (als Admin natürlich), dann sollte das Erstellen eines Druckers kein Problem sein.

Etwas Übung muss halt schon sein.

Was genau willst mit...
...bewirken ?

Powershell gibt alles, auch einen simplen String, zuerst mal in einem Object zurück.
Es würde also reichen in der PS einfach nur das zu machen:
Das wirst du aber nicht viel sehen. Hingegen listet $p.Startinfo alle StartParamter

Willst du wissen ob nach der Ausführung alles OK war Kannst du auf das Ende des Processes warten:
und anschließend den ExitCode anschauen:
System.Diagnostics.Process kann System.Diagnostics.ProcessStartInfo übergeben werden. In System.Diagnostics.ProcessStartInfo legst du alle Paramter fest die für dich wichtig sind.

das sind minimum 3:
  • UseShellExecute = $false
  • FileName = die exe die du starten willst, also cmd.exe
  • Arguments = die Argumente die du der Exe übergeben willst

Da cmd.exe mal wissen muss, wie es sich verhalten soll (offen bleiben oder nicht nach Ausführung) => "/c" (beutet nach Ausführung schließen)
du willst das cmd.exe was für dich macht? Dann sag ihr was:

pnpuitil -a -i "pfad zu einer inf-Datei" (pnputil liegt in C:\Windows\system32 und ist fester Bestandteil von W10) pnputil hat auch Argumente die man angeben kann/muss.

Du übergibst also sogar 2 Befehle. Einmal die Exe die gestartet werden soll, die Argumente für dieses Exe und einen Befehl der mit der Exe ausgeführt werden soll (pnputil ....)

Schau dir mal an was pnputil so kann und macht;
Schau dir auch an was cmd.exe so kann und macht;
In dem Beispiel musst du mal den Pfad zu deiner INF anpassen:
Bitte warten ..
Heiß diskutierte Inhalte
Windows Server
Lizenzrecht Microsoft HILFE!!!!
gelöst tAmtAm44Vor 17 StundenFrageWindows Server26 Kommentare

Guten Abend liebe Community, ich bin vor kurzen bei uns in der Firma für den Vertrieb unsere MS Lizenzen auserwählt worden. Leider habe ich ...

Netzwerke
Windows 10 - Netzwerk Speedlimit?
alwayshungryVor 1 TagFrageNetzwerke17 Kommentare

Hallo, ich bin noch neu hier und hoffe, dass ihr mir helfen könnt. Gibt es eine Limitierung für Windows 10 bei der Netzwerkgeschwindigkeit? Leider ...

DNS
Domain überkleben
IT-EinsteigerVor 1 TagFrageDNS3 Kommentare

Guten Morgen, Ich habe mir einen WebSpace angemietet. Dieser läuft bspw. über die Domain storage.dienstleister.de. Jetzt ist das kein schöner Name und ich hätte ...

Datenschutz
Ist Microsoft Office 365 grds. nicht DSGVO-konform?
imebroVor 20 StundenFrageDatenschutz30 Kommentare

Hallo, in einem anderen Thread hatte man mir als Alternative zum Analysetool "Tableau" das Programm "PowerBI" empfohlen, welches ich dann auch gekauft habe. Da ...

Festplatten, SSD, Raid
WD RED PRO Festplatte als "Recertified" und "white" gelabelt
gelöst Torsten2010Vor 1 TagFrageFestplatten, SSD, Raid5 Kommentare

Hallo, ich wollte heute die Firmen QNAP Nas mit neuen Festplatten bestücken. Beim Auspacken fiel mir sofort auf, das die Festplatten weiß gelabelt sind ...

Groupware
Anfängerfrage zu Teams, wie kann ich mit einer externen Person chatten?
StefanKittelVor 1 TagFrageGroupware7 Kommentare

Hallo, ich habe mal eine Anfängerfrage zur MS Teams. Ich habe einen M365 Business Basic Account mit meiner Domäne. Ich habe einen User mit ...

Windows 10
Inaccessible boot device bei Windows 10
jensgebkenVor 1 TagFrageWindows 1014 Kommentare

Hallo Gemeinschaft, habe Probleme bei einem Windows 10 Pro PC beim Start - blue screen mit inaccessible boot device habe folgendes probiert - automatische ...

SAN, NAS, DAS
FritzBox NAS - Hochladen von großen Dateien geht nicht
emeriksVor 1 TagFrageSAN, NAS, DAS14 Kommentare

Hi, (Habe die Kategorie "SAN, NAS, DAS" genommen, obwohl nicht 100% zutreffend.) Ich habe am Wochenende versucht bei einem Kumpel in der Ferne eine ...