Powershell Menü aus Abfrage generieren?
Hallo!
Ich bräuchte von euch mal einen Tipp oder Denkanstoss wie ich das folgende Problem lösen kann...
Ich möchte mit Powershell die Drucker des Systems auslesen und dieses Ergebnis dann gefiltert an ein Menü weitergeben.
D.h. so dass jemand dann wählen kann ob er Drucker1,2 oder 3 haben möchte.
Ein festes Menü mit den Druckern ist kein Problem, auch nicht die Drucker zu listen und zu filtern...
Nur wechseln die Drucker im System und daher möchte ich dynamisch eine Liste generieren, die dann als Menüliste geladen wird.
Kann man dies realisieren?
Hat jemand Beispiele ähnlicher Art bei denen ich ansetzen kann?
Vielen Dank !
Ich bräuchte von euch mal einen Tipp oder Denkanstoss wie ich das folgende Problem lösen kann...
Ich möchte mit Powershell die Drucker des Systems auslesen und dieses Ergebnis dann gefiltert an ein Menü weitergeben.
D.h. so dass jemand dann wählen kann ob er Drucker1,2 oder 3 haben möchte.
Ein festes Menü mit den Druckern ist kein Problem, auch nicht die Drucker zu listen und zu filtern...
Nur wechseln die Drucker im System und daher möchte ich dynamisch eine Liste generieren, die dann als Menüliste geladen wird.
Kann man dies realisieren?
Hat jemand Beispiele ähnlicher Art bei denen ich ansetzen kann?
Vielen Dank !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135967
Url: https://administrator.de/contentid/135967
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
wie wäre es wenn du erst einmal schreibst was du hast?
und was meinst du mit ob er Drucker 1, 2 oder 3 haben will?
Soll da drauf gedruckt werden oder als Standarddrucker gesetzt werden?
Grüße
EDIT:
Druckerverwaltung per Powershell:
http://www.searchnetworking.de/themenbereiche/infrastruktur/server-desk ...
Jetzt das ausgelesene in einen Dialog packen -> *freu*
EDIT2:
Mit Get-WmiObject die Drucker ermitteln --> in eine Textdatei schreiben --> aus dieser Datei das auslesen was relevant ist, also die Drucker namen --> schrittweise beim auslesen die Liste füllen
und was meinst du mit ob er Drucker 1, 2 oder 3 haben will?
Soll da drauf gedruckt werden oder als Standarddrucker gesetzt werden?
Grüße
EDIT:
Druckerverwaltung per Powershell:
http://www.searchnetworking.de/themenbereiche/infrastruktur/server-desk ...
Jetzt das ausgelesene in einen Dialog packen -> *freu*
EDIT2:
Mit Get-WmiObject die Drucker ermitteln --> in eine Textdatei schreiben --> aus dieser Datei das auslesen was relevant ist, also die Drucker namen --> schrittweise beim auslesen die Liste füllen
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Select a Printer"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Please select a printer:"
$objForm.Controls.Add($objLabel)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(10,40)
$objListBox.Size = New-Object System.Drawing.Size(260,20)
$objListBox.Height = 80
$colItems = get-wmiobject -class "win32_printer"
foreach ($objItem in $colItems) {
[void] $objListBox.Items.Add($objItem.Name)
}
$objForm.Controls.Add($objListBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
$x
Das füllt dir schonmal deine Liste und baut einen dialog und ganz ohne temporärer Textdatei.
Die Auswahl + OK liefert dir dann auch den entsprechenden Eintrag zurück.
Was willst du dann machen? Was ausdrucken oder den Drucker als Standarddrucker setzen?
Tool --> nein --> 1-4 Googlesuchanfragen um die Einzelteile zusammen zusuchen(bin ja noch Powershellfrischling) + etwas anpassen
Mein Taxi fährt vor -> !!Feierabend!!, vielleicht schau ich heute abend nochmal vorbei.
Zu deinem Ablauf:
Also willst du dir alle Drucker listen lassen --> Drucker auswählen --> Configfile senden --> Druckerliste mit neuem namen füllen?
Auf der Konsole kann man das auch alles ausgeben, ist nur die Frage ob das so schön ausschaut bei 100 Druckern =).
Bis denne --> FEIERABEND =).
Mein Taxi fährt vor -> !!Feierabend!!, vielleicht schau ich heute abend nochmal vorbei.
Zu deinem Ablauf:
Also willst du dir alle Drucker listen lassen --> Drucker auswählen --> Configfile senden --> Druckerliste mit neuem namen füllen?
Auf der Konsole kann man das auch alles ausgeben, ist nur die Frage ob das so schön ausschaut bei 100 Druckern =).
Bis denne --> FEIERABEND =).
Auszug von der Seite in meinem Ersten Post:
$d = Get-WMIObject -Class Win32_Printer -Filter „Name=‘HP Laserjet‘“
$d.PrinterStatus
Oder ohne Zuhilfenahme einer Variablen:
(Get-WMIObject -Class Win32_Printer -Filter „Name=‘HP Laserjet‘“).PrinterStatus
Die Bedeutung der Werte kann der folgenden Tabelle entnommen werden:
PrinterStatus:
1 = Andere
2 = Unbekannt
3 = Bereit
4 = Druckt
5 = Wärmt auf
6 = Druckauftrag beendet
7 = Offline
Über den PrinterStatus bekommste also raus welcher Drucker offline ist und kann dementsprechend in der Schleife wo die der Listbox hinzugefügt werden
abhängig vom Status einfügen. Ist der Status offline fügste nicht ein, ansonsten ja.
*prost* ^^
$d = Get-WMIObject -Class Win32_Printer -Filter „Name=‘HP Laserjet‘“
$d.PrinterStatus
Oder ohne Zuhilfenahme einer Variablen:
(Get-WMIObject -Class Win32_Printer -Filter „Name=‘HP Laserjet‘“).PrinterStatus
Die Bedeutung der Werte kann der folgenden Tabelle entnommen werden:
PrinterStatus:
1 = Andere
2 = Unbekannt
3 = Bereit
4 = Druckt
5 = Wärmt auf
6 = Druckauftrag beendet
7 = Offline
Über den PrinterStatus bekommste also raus welcher Drucker offline ist und kann dementsprechend in der Schleife wo die der Listbox hinzugefügt werden
abhängig vom Status einfügen. Ist der Status offline fügste nicht ein, ansonsten ja.
*prost* ^^