Hallo Zusammen,
ich komme bei folgendem Skript nicht weiter.
Ich suche eine Funktion für den "Aktualisieren Button", der das Skript neustartet oder aber alle aktuell installierten Drucker neu einliest. Ziel ist es, das ich das Skript eben nicht mehr selbst neustarten muss.
$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
$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 = "#d7ebfe"
$Form.TopMost = $true
$Form.Width = 1000
$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 = "verfügbare Drucker"
$lb_availablePrinters.AutoSize = $true
$lb_availablePrinters.Width = 10
$lb_availablePrinters.Height = 10
$lb_availablePrinters.location = new-object system.drawing.point(17,117)
$lb_availablePrinters.Font = "Verdana,20"
$Form.controls.Add($lb_availablePrinters)
$lb_defaultPrinter = New-Object system.windows.Forms.Label
$lb_defaultPrinter.Text = "aktueller Drucker"
$lb_defaultPrinter.AutoSize = $true
$lb_defaultPrinter.Width = 25
$lb_defaultPrinter.Height = 10
$lb_defaultPrinter.location = new-object system.drawing.point(450,117)
$lb_defaultPrinter.Font = "Verdana,20"
$Form.controls.Add($lb_defaultPrinter)
$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(800,374)
$bt_close.Font = "Verdana,15,style=Bold"
$Form.controls.Add($bt_close)
$v_printer = New-Object system.windows.Forms.Button
$v_printer.Text = "Übersicht verfügbare Drucker"
$v_printer.AutoSize = $true
$v_printer.ForeColor = "Black"
$v_printer.backColor = "White"
$v_printer.Cursor = [System.Windows.Forms.Cursors]::Hand
$v_printer.Width = 960
$v_printer.Height = 33
$v_printer.Add_Click({
start-process "\\serverxy\druckerübersicht\"
})
$v_printer.location = new-object system.drawing.point(10,28)
$v_printer.Font = "Verdana,15,style=Bold"
$Form.controls.Add($v_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({ALL})
$Form.Controls.Add($CHANGEButton)
$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,186)
$lb_printer.Font = "Verdana,15"
$Form.controls.Add($lb_printer)
$lstBX_printers = New-Object system.windows.Forms.ListBox
$lstBX_printers.Width = 300
$lstBX_printers.Height = 144
$lstBX_printers.location = new-object system.drawing.point(20,186)
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,373)
$bt_setDefault.Font = "Verdana,12,style=Bold"
$Form.controls.Add($bt_setDefault)
[void]$Form.ShowDialog()
$Form.Dispose()