Download und installation eines Druckertreibers mit Powershell

sniper8952

Lt. Junior Grade
Registriert
Juni 2008
Beiträge
354
Hallo Zusammen

Ich möchte mit einem Script einen Druckertreiber herunterladen und installieren und gleich den Drucker hinzufügen. Die Datei liegt auf SharePoint. Was ich bis jetzt hinbekommen habe:

#Install Printer Driver


$PrinterDriver = "KONICA MINOLTA Universal PCL v3.9.1"
$PrinterName = "KONICA Minolta bizhub C300i"
$PrinterPort = "optnmf01"
$DownloadPath ="https://xxx.sharepoint.com/:u:/s/XXX/EWf8fXlcSbtFtpG08UfyW?download=1"
#Printerpfad eingeben
$DownloadOrdner ="$env:TEMP/Druckertreiber"
$ZIPName = "KONIKA MINOLTA bizhub C300i PCL 6"

cd $env:TEMP
if (!(Test-Path $DownloadOrdner)) {New-Item -Path $DownloadOrdner -ItemType Directory}
Invoke-WebRequest $DownloadPath -Outfile $ZIPName
Expand-Archive -Path $ZIPName -DestinationPath $DownloadOrdner

pnputil.exe /add-driver $DownloadOrdner /install
Add-PrinterDriver -Name $PrinterDriver
Add-PrinterPort -Name $PrinterPort -PrinterHostAddress $PrinterPort
Add-Printer $PrinterName -DriverName $PrinterDriver -PortName $PrinterPort

Meine Frage, wie wechsle ich in den Ordner wo entzippt wurde um die inf Datei als Treiber hinzuzufügen?

Liebe Grüsse

Sniper8952
 
"hinzuzufügen" und "installieren" sind halt für mich zwei paar Schuhe, deshalb die Frage.
Und macht denn nicht das Script schon genau das (das Installieren)?
 
Wenn ich die .inf mit Rechtsklick installiere sehe ich in der Druckerverwaltung den Treiber noch nicht. Deshalb gehe ich davon aus das ich den Treiber mit pnputil.exe installieren muss. Das Script findet soweit ich das sehe den Treiber nicht.
 
Eventuell musst du das machen?
pnputil.exe /add-driver $DownloadOrdner/*.inf /install
 
sniper8952 schrieb:
Meine Frage, wie wechsle ich in den Ordner wo entzippt wurde um die inf Datei als Treiber hinzuzufügen?
Set-Location $DownloadOrdner

Brauchst du aber eigentlich nicht weil du ja den Pfad an Pnputil.exe übergibst. Evtl. mal mit Anführungszeichen probieren, weil da vermutlich Leerzeichen drin sind:
Code:
pnputil.exe /add-driver "$DownloadOrdner\*.inf" /install
Und wenn die Inf nicht direkt in $DownloadOrdner liegt noch den parameter /subdirs hinzufügen.
 
  • Gefällt mir
Reaktionen: tollertyp
Kann es sein das pnputil.exe /add-driver "$DownloadOrdner\*.inf" /install keine Variable $DownloadOrdner eingeben kann? Er findet den Pfad nämlich nicht.
 
was passiert denn, wenn du
Code:
Write-Host "pnputil.exe /add-driver ""$DownloadOrdner\*.inf"""
machst oder
Code:
Get-ChildItem -Path "$DownloadOrdner\*.inf"" | Write-Host
Und liegen im Root da wirklich die INF-Dateien? Evtl mal mit /subdirs probieren?

Also hier liegen keine inf-Dateien bei mir:
1656511043437.png


Und den Ordner gibt es nicht:
1656511069699.png


sieht gleich aus, vermutlich also /subdirs.
 
Ich habe mein Script in der Zwischenzeit korrigiert:
#Printerpfad eingeben
$DownloadOrdner ="$env:TEMP\Druckertreiber"
$ZIPName = "KONIKA MINOLTA bizhub C300i PCL 6"


cd $env:TEMP
if (!(Test-Path $DownloadOrdner)) {New-Item -Path $DownloadOrdner -ItemType Directory}
Invoke-WebRequest $DownloadPath -Outfile $ZIPName

Rename-Item $ZIPName -NewName "$ZIPName.zip"
Expand-Archive -Path $ZIPName*.zip -DestinationPath $DownloadOrdner

$Entpackt = $DownloadOrdner + "\" +$ZIPName

pnputil.exe /add-driver "$Entpackt\*.inf"
Add-PrinterDriver -Name $PrinterDriver
Add-PrinterPort -Name $PrinterPort -PrinterHostAddress $PrinterPort
Add-Printer $PrinterName -DriverName $PrinterDriver -PortName $PrinterPort

Wenn ich jetzt den Befehl Write-Host "pnputil.exe /add-driver ""$Entpackt\*.inf""" ausführe, dann erhalte ich den richtigen Pfad \AppData\Local\Temp\Druckertreiber\KONIKA MINOLTA bizhub C300i PC
L 6\*.inf"
 
Ich nehme an heir erhälst du dann keine Ausgabe:

Code:
Get-ChildItem -Path "$Entpackt\*.inf" | Write-Host

Wie gesagt, es deutet darauf hin, dass die INF-Dateien halt nicht im Root liegen, also mit /subdirs.

Code:
pnputil.exe /add-driver "$Entpackt\*.inf" /subdirs
Evtl auch mit /install
 
Korrekt er ist nicht vorhanden
Die inf Datei ist jedoch vorhanden.
1656511473970.png
 

Anhänge

  • 1656511463331.png
    1656511463331.png
    27,3 KB · Aufrufe: 178
Ich denke gerade nach: Also wenn es an administrativen Berechtigungen liegen würde, würde wohl ein anderer Fehler kommen.

Also du hast von nicht vorhanden gesprochen, deshalb nochmal die explizite Frage, sorry:
Das liefert keine Ausgabe im Script:
Code:
Get-ChildItem -Path "$Entpackt\*.inf" | Write-Host
 
Läuft das Script mit User-Rechten oder mit administrativen?
Gibt es den Ordner denn wirklich nicht?

Du hast den Namen nicht überall zensiert :-)
 
  • Gefällt mir
Reaktionen: JennyCB und dahkenny
sniper8952 schrieb:
pnputil.exe /add-driver "$Entpackt\*.inf"
fehlt da bei dem pnputil.exe jetzt nicht der /install Parameter?

Lass das Skript doch mal bis zum pnputil Befehl laufen und poste die Ausgabe (wenn es denn eine gibt)
 
Mal so versuchen:

PowerShell:
$InfFile = (Get-ChildItem -Recurse -Force -Path "$Entpackt\*.inf").Name
pnputil.exe /add-driver "$Entpackt\$InfFile"
 
Okay... Alles ganz einfach. Also zumindest die Fehlerursache.

Der Fehler ist das Leerzeichen "PCL 6" vs "PCL6".
Das Zip selbst enthält einen Ordner, der vom Archivnamen abweicht.

Kein Leerzeichen im entpackten Ordner:
1656522670028.png


Leerzeichen im Script:
1656522622032.png

Insofern beantworte ich die Frage, die ich weiter oben gestellt habe, hier gerne für den TE:

tollertyp schrieb:
Gibt es den Ordner denn wirklich nicht?
Ja, den gibt es wirklich nicht.

Btw:
Hier hatte der TE es ohne Leerzeichen...
1656522933889.png
 
Zuletzt bearbeitet:
Die Abfrage funktioniert immer noch nicht. Liegt es vielleicht am Benutzernamen?
@tollertyp: Das mit dem Leerzeichen verstehe ich, jedoch wenn ich den Pfad rein kopiere und nicht $Entpackt\*.inf" dann funktioniert es. Somit stimmt etwas mit der Variable nicht.
1656522662134.png
 
Zurück
Oben