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-Key: 661658

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

Printed on: April 26, 2024 at 06:04 o'clock

Member: beidermachtvongreyscull
beidermachtvongreyscull Mar 11, 2021 at 08:35:35 (UTC)
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
Member: GarfieldBonn
GarfieldBonn Mar 11, 2021 updated at 09:18:39 (UTC)
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 ;)
Member: TK1987
TK1987 Mar 11, 2021 updated at 11:19:56 (UTC)
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
Member: GarfieldBonn
GarfieldBonn Mar 11, 2021 at 09:29:59 (UTC)
Goto Top
Gefällt mir. Windows darf aber auch hier nicht den Standarddrucker selbst verwalten.
Member: TK1987
TK1987 Mar 11, 2021 at 09:55:23 (UTC)
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.
Member: supertux
supertux Mar 11, 2021 at 11:02:25 (UTC)
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.
Member: GarfieldBonn
GarfieldBonn Mar 11, 2021 at 12:03:58 (UTC)
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.
Member: TK1987
TK1987 Mar 11, 2021 at 12:12:16 (UTC)
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.
Member: erikro
erikro Mar 11, 2021 at 17:06:52 (UTC)
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