PowerShell Installierten Drucker als Standarddrucker setzen
Hallo zusammen,
folgende Aufgabe versuche ich (leider vergebens... ) zu lösen.
Ich lese alle vorhandenen Drucker mittels aus.
Anschließend möchte ich den ersten Wert dieser Liste als Standarddrucker setzten...
Ich muss dazu sagen, dass das meine ersten Berührungen mit der PowerShell sind.
Mir scheint, als hätte ich hier ein absolutes Brett vorm Kopf.
Schon mal danke für eure Antworten!
LG
folgende Aufgabe versuche ich (leider vergebens... ) zu lösen.
Ich lese alle vorhandenen Drucker mittels
get-wmiobject win32_printer | Select Name
Anschließend möchte ich den ersten Wert dieser Liste als Standarddrucker setzten...
SetDefaultPrinter()
Ich muss dazu sagen, dass das meine ersten Berührungen mit der PowerShell sind.
Mir scheint, als hätte ich hier ein absolutes Brett vorm Kopf.
Schon mal danke für eure Antworten!
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 600883
Url: https://administrator.de/contentid/600883
Ausgedruckt am: 23.11.2024 um 14:11 Uhr
5 Kommentare
Neuester Kommentar
Anschließend möchte ich den ersten Wert dieser Liste als Standarddrucker setzten...
Wirklich sicher anhand der Position?? Nicht anhand des Namens?(gwmi win32_Printer | select -First 1).SetDefaultPrinter()
gwmi win32_Printer -Filter "Name like '%Laserjet%'" | select -First 1 | %{$_.SetDefaultPrinter()}
Vielleicht etwas zu viel für deine Anforderung aber probier mal folgendes. Skript kann man dann natürlich noch erweitern um bspw. ganze Druckerinstallationen etc.
$window = Add-Type -memberDefinition @"
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru
$window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
$Printers = Get-WmiObject -Class Win32_Printer | Select-Object -ExpandProperty name
function Refresh-Printers {
$Printers = Get-WmiObject -Class Win32_Printer | Select-Object -ExpandProperty name
$lstBX_printers.Items.Clear()
$lstBX_printers.Items.AddRange(@($Printers))
}
$currentPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | Select-Object -ExpandProperty name
Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object system.Windows.Forms.Form
$Form.Text = "Standard Drucker Einstellung"
$Form.BackColor = "#7fb5b5"
$Form.TopMost = $true
$Form.Width = 1020
$Form.Height = 500
$Form.StartPosition = "CenterScreen"
$Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
$Form.Icon = $Icon
$lb_availablePrinters = New-Object system.windows.Forms.Label
$lb_availablePrinters.Text = "aktuell installierte Drucker"
$lb_availablePrinters.AutoSize = $true
$lb_availablePrinters.Width = 25
$lb_availablePrinters.Height = 10
$lb_availablePrinters.location = new-object system.drawing.point(20,30)
$lb_availablePrinters.Font = "Verdana,15,style=Bold"
$Form.controls.Add($lb_availablePrinters)
$lb_defaultPrinter = New-Object system.windows.Forms.Label
$lb_defaultPrinter.Text = "↓ aktueller Standarddrucker ↓"
$lb_defaultPrinter.AutoSize = $true
$lb_defaultPrinter.Width = 25
$lb_defaultPrinter.Height = 10
$lb_defaultPrinter.location = new-object system.drawing.point(450,30)
$lb_defaultPrinter.Font = "Verdana,18,style=Bold"
$Form.controls.Add($lb_defaultPrinter)
$lb_printer = New-Object system.windows.Forms.Label
$lb_printer.Text = "$currentPrinter"
$lb_printer.AutoSize = $true
$lb_printer.Width = 350
$lb_printer.Height = 50
$lb_printer.location = new-object system.drawing.point(450,100)
$lb_printer.Font = "Verdana,15"
$Form.controls.Add($lb_printer)
$CHANGEButton = new-object System.Windows.Forms.Button
$CHANGEButton.Location = new-object System.Drawing.Size(20,330)
$CHANGEButton.Size = new-object System.Drawing.Size(150,20)
$CHANGEButton.Text = "Aktualisieren"
$CHANGEButton.ForeColor = "Black"
$CHANGEButton.backColor = "White"
$CHANGEButton.Add_Click({Refresh-Printers})
$Form.Controls.Add($CHANGEButton)
$bt_close = New-Object system.windows.Forms.Button
$bt_close.Text = "Schließen"
$bt_close.ForeColor = "White"
$bt_close.BackColor = "Red"
$bt_close.Cursor = [System.Windows.Forms.Cursors]::Hand
$bt_close.Width = 145
$bt_close.Height = 33
$bt_close.Add_Click({
$Form.Close()
})
$bt_close.location = new-object system.drawing.point(820,400)
$bt_close.Font = "Verdana,15,style=Bold"
$Form.controls.Add($bt_close)
$lstBX_printers = New-Object system.windows.Forms.ListBox
$lstBX_printers.Width = 300
$lstBX_printers.Height = 200
$lstBX_printers.location = new-object system.drawing.point(20,100)
foreach ($Printer in $Printers)
{
$lstBX_printers.Items.Add($Printer)
}
$lstBX_printers.Add_Click({
$Global:currentPrinter = $lstBX_printers.SelectedItem
})
$Form.controls.Add($lstBX_printers)
$bt_setDefault = New-Object system.windows.Forms.Button
$bt_setDefault.Text = "als Standard einrichten"
$bt_setDefault.ForeColor = "White"
$bt_setDefault.BackColor = "Green"
$bt_setDefault.Cursor = [System.Windows.Forms.Cursors]::Hand
$bt_setDefault.Width = 300
$bt_setDefault.Height = 33
$bt_setDefault.Add_Click({
(New-Object -ComObject WScript.Network).SetDefaultPrinter($Global:currentPrinter)
$lb_printer.Text = "$Global:currentPrinter"
$lb_printer.Refresh()
})
$bt_setDefault.location = new-object system.drawing.point(20,400)
$bt_setDefault.Font = "Verdana,12,style=Bold"
$Form.controls.Add($bt_setDefault)
$Form.controls.Add($lstBX_printers)
$bt_setDefault = New-Object system.windows.Forms.Button
$bt_setDefault.Text = "Drucker Entfernen"
$bt_setDefault.ForeColor = "White"
$bt_setDefault.BackColor = "Orange"
$bt_setDefault.Cursor = [System.Windows.Forms.Cursors]::Hand
$bt_setDefault.Width = 300
$bt_setDefault.Height = 33
$bt_setDefault.Add_Click({
Remove-Printer -name($Global:currentPrinter)
Refresh-Printers
$lb_printer.Refresh()
})
$bt_setDefault.location = new-object system.drawing.point(400,400)
$bt_setDefault.Font = "Verdana,12,style=Bold"
$Form.controls.Add($bt_setDefault)
[void]$Form.ShowDialog()
$Form.Dispose()