supertux
Goto Top

Drucker über Liste als Standard definieren

Hallo,

ich bin auf der Suche nach eine CMD-Script, welches mir die installierten Drucker auf dem Windows-System ermittelt.

wmic printer get name

Diese List der vorhanden Drucker sollten dann in einer Auswahl mit 1,2,3,4 zu Verfügung stehen und der ausgewählte
Drucker sollte dann als Standarddrucker gesetzt werden.

wmic printer where name="Druckername" call setdefaultprinter

Vielen Dank

supertux

Content-ID: 661658

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

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

beidermachtvongreyscull
beidermachtvongreyscull 11.03.2021 um 09:35:35 Uhr
Goto Top
Moin gugge mal hier: https://www.heelpbook.net/2012/hta-how-can-i-let-users-choose-a-default- ...

Eine kleine Lösung als HTA.

Gruß
bdmvg
GarfieldBonn
GarfieldBonn 11.03.2021 aktualisiert um 10:18:39 Uhr
Goto Top
cls
$AllPrinters     = (Get-WMIObject -ClassName win32_printer)
$Anzahl          = $AllPrinters.Count


$Auswahl = 0
$i=1
while ($i -gt 0) {
   $i = 1
   Write-Host "Liste der Drucker"  

   foreach ($Printer in $AllPrinters) {      
      write-Host $i": "($Printer).Name   
      $i++
   }
   write-Host "0: Ohne Änderung beenden"  
   Write-Host 
   $Auswahl=Read-Host "Welcher Drucker soll als Standard gesetzt werden? "  
 
   if(($Auswahl -gt 0) -and ($Auswahl -lt $i)) {
      write-host $Auswahl
      $i=0
      ($allPrinters[$Auswahl-1]).SetDefaultPrinter()

   }
   if($Auswahl -eq 0) {$i=0}
}

write-host ""  

Hinweis : Windows awählt selbst Standarddrucker aus sollte dann nicht angehakt sein ;)
TK1987
TK1987 11.03.2021 aktualisiert um 12:19:56 Uhr
Goto Top
Moin,

da würde ich eher zu Powershell greifen.
Mit GUI:
Add-Type -as System.Windows.Forms
$Font = New-Object Drawing.Font 'Microsoft Sans Serif','11'  

# Fensterdefinition
$Form = New-Object Windows.Forms.Form -p @{AutoSize=$true ; StartPosition='CenterScreen' ; Text='Standarddrucker setzen' ; KeyPreview=$true}  
$Table = New-Object Windows.Forms.TableLayoutPanel -p @{AutoSize=$true ; Dock='Fill'}  
$Form.Controls.Add($Table)

# Radiobutton-Liste erzeugen
$FlowRadios = New-Object Windows.Forms.FlowLayoutPanel -p @{AutoSize=$true ; FlowDirection='TopDown' ; Dock='Top' ; Padding='10,10,10,10' ; MaximumSize='1800,1000'}  
$Printers = Get-WmiObject Win32_Printer
$Radios = Foreach ($Printer in $Printers) {
  New-Object Windows.Forms.RadioButton -p @{AutoSize=$true ; Text=$Printer.Name ; Checked=$Printer.Default ; Font=$Font}
}
$FlowRadios.Controls.AddRange($Radios)
$Table.Controls.Add($FlowRadios,0,0)

# Steuerung
$OkButton = New-Object Windows.Forms.Button -p @{Text='Als Standard setzen' ; Size='100,50' ; Anchor='Bottom' ; Margin='20,10,20,20' ; Font=$Font}  
$Table.Controls.Add($OkButton,0,1)

# Events
$Form.Add_KeyDown({
  switch ($_.KeyCode) {
    'Return' {$OkButton.PerformClick()}  
    'Escape' {$this.Hide()}  
  }
})

$OkButton.Add_Click({
  $Form.Hide()
  [void]($printers | ? Name -eq ($Radios|? Checked).Text).SetDefaultPrinter()
})

# Anzeige
[void]$Form.ShowDialog()

Gruß Thomas
GarfieldBonn
GarfieldBonn 11.03.2021 um 10:29:59 Uhr
Goto Top
Gefällt mir. Windows darf aber auch hier nicht den Standarddrucker selbst verwalten.
TK1987
TK1987 11.03.2021 um 10:55:23 Uhr
Goto Top
Wieso nicht?!

AFAIK stellt Windows doch in dem Fall einfach nur den zuletzt verwendeten Drucker als Standard ein.
Das Einstellen des Standarddruckers würde hier also genauso funktionieren - und zwar exakt so lange, bis man wieder etwas auf einem anderen Drucker ausdruckt.
supertux
supertux 11.03.2021 um 12:02:25 Uhr
Goto Top
Vielen Dank für die vielen Vorschläge, ich werde diese testen.

Der Standarddrucker verändert sich auch, wenn sich ein Benutzer einer Domäne an einen anderen Client anmeldet als üblich.
Klar, der bisherige Drucker existiert auf diesem System nicht und Windows setzt immer PDF-XChange 4.0 als Standarddrucker.
Leider handelt es sich hierbei um USB-Drucker.
GarfieldBonn
GarfieldBonn 11.03.2021 um 13:03:58 Uhr
Goto Top
Wenn der Haken gesetzt ist, stellt das Skipt zumindestens visuell den Standarddrucker nicht um. Hab jetzt nicht getestet ob er trotzdem auf den gewünschten Drucker ausgibt.
TK1987
TK1987 11.03.2021 um 13:12:16 Uhr
Goto Top
Zitat von @GarfieldBonn:
Wenn der Haken gesetzt ist, stellt das Skipt zumindestens visuell den Standarddrucker nicht um.
Visuell zeigt er dann ja auch überhaupt keinen Drucker mehr als Standard an.
Hab jetzt nicht getestet ob er trotzdem auf den gewünschten Drucker ausgibt.
Jup, genau das macht er.
erikro
erikro 11.03.2021 um 18:06:52 Uhr
Goto Top
Moin,

Zitat von @GarfieldBonn:

Gefällt mir. Windows darf aber auch hier nicht den Standarddrucker selbst verwalten.

Windows darf nie den Standarddrucker selbst verwalten. Das verwirrt bloß die User und führt zu unnötigen zusätzlichen Ausdrucken. Da druckt man mal was auf A3, vergisst beim nächsten Geschäftsbrief wieder umzustellen und schwupps landet er auf rosa A3-Papier. face-wink Diese Schwachsinnsfunktion wird sowieso per GPO ausgeschaltet. face-wink

Liebe Grüße

Erik