Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Drucker per PowerShell auf Printserver installieren

Frage Entwicklung Batch & Shell

Mitglied: Pago159

Pago159 (Level 2) - Jetzt verbinden

01.12.2014, aktualisiert 05.12.2014, 3323 Aufrufe, 19 Kommentare, 2 Danke

Hallo Kolleginnen und Kollegen,

vor kurzem gab es schon einmal eine Frage zur installation von Druckern auf Printservern, allerdings sollte in diesem Fall ein Skript direkt auf dem Printserver laufen und dort Drucker installieren.
Ich hätte es gerne, dass ich von meinem Client aus per Powershell auf verschiedenen Printservern Druckerobjekte mit entsprechendem Port installieren kann, ohne jedes mal eine RDP-Sitzung zum Drucker zu starten.
Ich habe auch schon ein bisschen rum gebastelt, mein Skript läuft auch ohne Fehler durch (PowerShell ISE).
Wenn es eine Möglichkeit gibt die Textdateien zu umgehen, also alles nur durch das Skript laufen zu lassen und zum Schluss eine Logdatei zu schreiben, welche den Printserver, den Druckernamen, die IP-Adresse, den Standort und das Druckermodell enthält, wäre ich auch hierüber sehr dankbar.

und nun mein Skript:

01.
#printer add script  
02.
#Created from Scripting guys example scripts and Stephen Small.  
03.
04.
  
05.
#Löscht alle variablen, damit bei einem doppelten Lauf keine Werte vergeben sind.  
06.
$portname = ""  
07.
$IPaddress = ""  
08.
$driver = ""  
09.
$location = ""  
10.
$comment = ""  
11.
$printserver = "" 
12.
 
13.
 
14.
  
15.
#Erstellen der Form 
16.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")   
17.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")   
18.
  
19.
$objForm = New-Object System.Windows.Forms.Form  
20.
$objForm.Text = "Printer Add"  
21.
$objForm.Size = New-Object System.Drawing.Size(300,550)   
22.
$objForm.StartPosition = "CenterScreen"  
23.
  
24.
# Erstellen der Label für die Texteingabe (Druckername)  
25.
 
26.
$objLabel1 = New-Object System.Windows.Forms.Label  
27.
$objLabel1.Location = New-Object System.Drawing.Size(10,20)   
28.
$objLabel1.Size = New-Object System.Drawing.Size(280,20)   
29.
$objLabel1.Text = "Druckername:"  
30.
$objForm.Controls.Add($objLabel1)   
31.
  
32.
$objTextBox1 = New-Object System.Windows.Forms.TextBox   
33.
$objTextBox1.Location = New-Object System.Drawing.Size(10,40)   
34.
$objTextBox1.Size = New-Object System.Drawing.Size(260,20)   
35.
$objForm.Controls.Add($objTextBox1)  
36.
  
37.
 # Erstellen der Label für die Texteingabe (IP-Adresse)  
38.
  
39.
$objLabel2 = New-Object System.Windows.Forms.Label  
40.
$objLabel2.Location = New-Object System.Drawing.Size(10,70)   
41.
$objLabel2.Size = New-Object System.Drawing.Size(280,20)   
42.
$objLabel2.Text = "IP-Adresse:"  
43.
$objForm.Controls.Add($objLabel2)   
44.
  
45.
$objTextBox2 = New-Object System.Windows.Forms.TextBox   
46.
$objTextBox2.Location = New-Object System.Drawing.Size(10,90)   
47.
$objTextBox2.Size = New-Object System.Drawing.Size(260,20)   
48.
$objForm.Controls.Add($objTextBox2)  
49.
  
50.
 # Erstellen der Label für die Texteingabe (Standort)  
51.
  
52.
$objLabel3 = New-Object System.Windows.Forms.Label  
53.
$objLabel3.Location = New-Object System.Drawing.Size(10,120)   
54.
$objLabel3.Size = New-Object System.Drawing.Size(280,20)   
55.
$objLabel3.Text = "In welchem Zimmer steht der Drucker?"  
56.
$objForm.Controls.Add($objLabel3)   
57.
  
58.
$objTextBox3 = New-Object System.Windows.Forms.TextBox   
59.
$objTextBox3.Location = New-Object System.Drawing.Size(10,150)   
60.
$objTextBox3.Size = New-Object System.Drawing.Size(260,20)   
61.
$objForm.Controls.Add($objTextBox3)  
62.
  
63.
 # Erstellen der Label für die Texteingabe (Printserver) 
64.
  
65.
$objLabel4 = New-Object System.Windows.Forms.Label  
66.
$objLabel4.Location = New-Object System.Drawing.Size(10,180)   
67.
$objLabel4.Size = New-Object System.Drawing.Size(280,20)   
68.
$objLabel4.Text = "Printserver Name:"  
69.
$objForm.Controls.Add($objLabel4)   
70.
  
71.
$objTextBox4 = New-Object System.Windows.Forms.TextBox   
72.
$objTextBox4.Location = New-Object System.Drawing.Size(10,200)   
73.
$objTextBox4.Size = New-Object System.Drawing.Size(260,20)   
74.
$objForm.Controls.Add($objTextBox4)  
75.
  
76.
 # Erstellen der Label für die Texteingabe (Kommentar) 
77.
  
78.
$objLabel5 = New-Object System.Windows.Forms.Label  
79.
$objLabel5.Location = New-Object System.Drawing.Size(10,230)   
80.
$objLabel5.Size = New-Object System.Drawing.Size(280,20)   
81.
$objLabel5.Text = "Comment:"  
82.
$objForm.Controls.Add($objLabel5)   
83.
   
84.
$objTextBox5 = New-Object System.Windows.Forms.TextBox   
85.
$objTextBox5.Location = New-Object System.Drawing.Size(10,250)   
86.
$objTextBox5.Size = New-Object System.Drawing.Size(260,20)   
87.
$objForm.Controls.Add($objTextBox5)  
88.
  
89.
 # Liste der Drucker, die eingerichtet werden Können (Pfad zur *.ini muss noch eingerichtet werden) 
90.
  
91.
$objLabel6 = New-Object System.Windows.Forms.Label 
92.
$objLabel6.Location = New-Object System.Drawing.Size(10,280)  
93.
$objLabel6.Size = New-Object System.Drawing.Size(280,20)  
94.
$objLabel6.Text = "Suchen Sie den Druckertreiber aus:" 
95.
$objForm.Controls.Add($objLabel6)  
96.
  
97.
$objListBox = New-Object System.Windows.Forms.ListBox   
98.
$objListBox.Location = New-Object System.Drawing.Size(10,300)   
99.
$objListBox.Size = New-Object System.Drawing.Size(260,20)   
100.
$objListBox.Height = 160  
101.
$objListbox.SelectionMode = "one"  
102.
   
103.
[void] $objListBox.Items.Add("HP Color LaserJet 3505")  
104.
[void] $objListBox.Items.Add("HP Color LaserJet 3800")  
105.
[void] $objListBox.Items.Add("HP LaserJet 1320")  
106.
[void] $objListBox.Items.Add("Lexmark C510")  
107.
[void] $objListBox.Items.Add("Lexmark MS510dn")  
108.
[void] $objListBox.Items.Add("Lexmark C734dn")  
109.
[void] $objListBox.Items.Add("Lexmark C746")  
110.
[void] $objListBox.Items.Add("Lexmark E120n")  
111.
[void] $objListBox.Items.Add("Lexmark E352dn")  
112.
[void] $objListBox.Items.Add("Lexmark E360dn")  
113.
[void] $objListBox.Items.Add("Lexmark E460dn") 
114.
[void] $objListBox.Items.Add("Lexmark T420") 
115.
[void] $objListBox.Items.Add("Lexmark T650") 
116.
[void] $objListBox.Items.Add("Lexmark X544") 
117.
[void] $objListBox.Items.Add("Kyocera Mita FS-1010") 
118.
[void] $objListBox.Items.Add("Kyocera Mita FS-6020")  
119.
[void] $objListBox.Items.Add("NRG 1805d 1808d 1802d") 
120.
[void] $objListBox.Items.Add("NRG 1305 1308 1302") 
121.
[void] $objListBox.Items.Add("NRG 2205 2238 2212") 
122.
[void] $objListBox.Items.Add("NRG 3545 3518 3532") 
123.
[void] $objListBox.Items.Add("NRG 6002 6005 6008") 
124.
[void] $objListBox.Items.Add("NRG 7502 7505 7508") 
125.
[void] $objListBox.Items.Add("NRG DSm 415") 
126.
[void] $objListBox.Items.Add("NRG DSm 615") 
127.
[void] $objListBox.Items.Add("NRG DSm 618") 
128.
[void] $objListBox.Items.Add("NRG DSm 622") 
129.
[void] $objListBox.Items.Add("NRG DSm 651") 
130.
[void] $objListBox.Items.Add("NRG DSm 735") 
131.
[void] $objListBox.Items.Add("NRG MP 2550") 
132.
[void] $objListBox.Items.Add("NRG P 7325N") 
133.
[void] $objListBox.Items.Add("Ricoh Aficio 3025") 
134.
[void] $objListBox.Items.Add("Ricoh Aficio 3045") 
135.
[void] $objListBox.Items.Add("Ricoh Aficio MP 5000B") 
136.
[void] $objListBox.Items.Add("Ricoh Aficio MP 5500") 
137.
[void] $objListBox.Items.Add("Ricoh Aficio MP 6000") 
138.
[void] $objListBox.Items.Add("Ricoh Aficio MP 7500") 
139.
 
140.
$objListBox.SelectedItem  
141.
  
142.
$objForm.Controls.Add($objListBox)  
143.
  
144.
# HIER STEHEN JETZT DIE BUTTONS!!! 
145.
 
146.
$objForm.KeyPreview = $True  
147.
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") {$driver=$objListBox.SelectedItem;$portname=$objTextBox1.Text;$IPaddress=$objTextBox2.Text;$Location=$objTextBox3.Text;$printserver=$objTextbox4.Text;$objForm.Close()}})  
148.
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") {$Cancel=$True;$objForm.Close()}})  
149.
 
150.
 
151.
 
152.
$OKButton = New-Object System.Windows.Forms.Button  
153.
$OKButton.Location = New-Object System.Drawing.Size(75,480)  
154.
$OKButton.Size = New-Object System.Drawing.Size(75,23)  
155.
$OKButton.Text = "OK"  
156.
$OKButton.Add_Click({$driver=$objListBox.SelectedItem;$portname=$objTextBox1.Text;$IPaddress=$objTextBox2.Text;$Location=$objTextBox3.Text;$comment=$objTextBox5.Text;$printserver=$objTextbox4.Text;$objForm.Close()})  
157.
$objForm.Controls.Add($OKButton)  
158.
  
159.
$CancelButton = New-Object System.Windows.Forms.Button  
160.
$CancelButton.Location = New-Object System.Drawing.Size(150,480)  
161.
$CancelButton.Size = New-Object System.Drawing.Size(75,23)  
162.
$CancelButton.Text = "Cancel"  
163.
$CancelButton.Add_Click({$Cancel=$True;$objForm.Close()})  
164.
$objForm.Controls.Add($CancelButton)   
165.
  
166.
  
167.
$objForm.Topmost = $True  
168.
  
169.
$objForm.Add_Shown({$objForm.Activate()})  
170.
[void] $objForm.ShowDialog()  
171.
  
172.
if ($Cancel -eq $True)  
173.
{Exit}  
174.
   
175.
  
176.
#Hinzufügen der Daten zu den Textdateien für die spätere Erstellung der Objekte  
177.
  
178.
Clear-Content c:\printeraddscript\ports.txt  
179.
add-content c:\printeraddscript\ports.txt "Printserver,Portname,IPAddress"  
180.
add-content c:\printeraddscript\ports.txt "$printservername","$portname","$IPaddress"  
181.
   
182.
Clear-Content c:\printeraddscript\printers.txt  
183.
add-content c:\printeraddscript\printers.txt "Printserver,Driver,PortName,ShareName,Location,Comment,DeviceID"  
184.
add-content c:\printeraddscript\printers.txt "$printservername","$driver","$portname","$portname","$location","$IPaddress", "$driver","$portname"  
185.
   
186.
#Erstellt das Druckerobjekt mit Hilfe der Textdokumente 
187.
  
188.
function CreatePrinterPort {  
189.
$server = $args[0]   
190.
$port = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_TCPIPPrinterPort").createInstance()  
191.
$port.Name = $args[1]  
192.
$port.SNMPEnabled = $true  
193.
$port.SNMPCommunity = ""  
194.
$port.Protocol = 1  
195.
$port.Portnumber = "9100"  
196.
$port.HostAddress = $args[2]    
197.
}  
198.
   
199.
function CreatePrinter{  
200.
$server = $args[0]  
201.
$print = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_Printer").createInstance()  
202.
$print.Drivername = $args[1]  
203.
$print.PortName = $args[2]  
204.
$print.Shared = $true  
205.
$print.Published = $true  
206.
$print.Sharename = $args[3]  
207.
$print.Location = $args[4]  
208.
$print.Comment = $args[5]  
209.
$print.DeviceID = $args[6]  
210.
 
211.
}  
212.
   
213.
#Log File  
214.
$printers = Import-Csv c:\printeraddscript\printers.txt  
215.
$ports = Import-Csv c:\printeraddscript\ports.txt  
216.
$filename = "printeradd-{0:d2}-{1:d2}-{2:d2}.log" -f $date.month,$date.day,$date.year  
217.
$filepath = "c:\printeraddscript\"  
218.
   
219.
foreach ($port in $ports){  
220.
CreatePrinterPort $port.Printserver $port.Portname $port.IPAddress  
221.
}  
222.
foreach ($printer in $printers){  
223.
CreatePrinter $printer.Printserver $printer.Driver $printer.Portname $printer.Sharename $printer.Location $printer.Comment $printer.DeviceID  
224.
$date = Get-Date; Add-Content -Path $filepath\$filename ("Printer $($portname) was added on $($printserver) at $($date)")  
225.
}  
226.
  
227.
#Balloon tip on Cmplettion  
228.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
229.
  
230.
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon   
231.
  
232.
$objNotifyIcon.Icon = "C:\ProgramData\Microsoft\Device Stage\Task\{e35be42d-f742-4d96-a50a-1775fb1a7a42}\print_queue.ico"  
233.
$objNotifyIcon.BalloonTipIcon = "Info"   
234.
$objNotifyIcon.BalloonTipText = ("Der Drucker" , $portname , " wurde auf dem Server" , $printserver , "hinzugefügt.")   
235.
$objNotifyIcon.BalloonTipTitle = "Printer add Complete"  
236.
   
237.
$objNotifyIcon.Visible = $False   
238.
$objNotifyIcon.ShowBalloonTip(20000)     
239.
 
Mitglied: colinardo
LÖSUNG 01.12.2014, aktualisiert 05.12.2014
Hallo pago,
etwa so (ungetestet mangels zur Verfügung stehender Drucker):
01.
function GenerateForm { 
02.
 
03.
#region Import the Assemblies 
04.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
05.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
06.
#endregion 
07.
 
08.
#region Generated Form Objects 
09.
$form1 = New-Object System.Windows.Forms.Form 
10.
$txtPrinterPort = New-Object System.Windows.Forms.NumericUpDown 
11.
$label7 = New-Object System.Windows.Forms.Label 
12.
$comboPrintServer = New-Object System.Windows.Forms.ComboBox 
13.
$btnCancel = New-Object System.Windows.Forms.Button 
14.
$btnOK = New-Object System.Windows.Forms.Button 
15.
$label6 = New-Object System.Windows.Forms.Label 
16.
$txtPrinterComment = New-Object System.Windows.Forms.TextBox 
17.
$txtPrinterLocation = New-Object System.Windows.Forms.TextBox 
18.
$label4 = New-Object System.Windows.Forms.Label 
19.
$lbPrinterType = New-Object System.Windows.Forms.ListBox 
20.
$txtPrinterIP = New-Object System.Windows.Forms.TextBox 
21.
$txtPrintername = New-Object System.Windows.Forms.TextBox 
22.
$label3 = New-Object System.Windows.Forms.Label 
23.
$label2 = New-Object System.Windows.Forms.Label 
24.
$label1 = New-Object System.Windows.Forms.Label 
25.
$label5 = New-Object System.Windows.Forms.Label 
26.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
27.
#endregion Generated Form Objects 
28.
 
29.
#---------------------------------------------- 
30.
# Event Script Blocks 
31.
#---------------------------------------------- 
32.
$createPrinter = { 
33.
 
34.
    Try{ 
35.
        $printserver = $comboPrintServer.Text 
36.
        $portname = "IP_$($txtPrinterIP.Text)" 
37.
     
38.
        # create printer port 
39.
        $wmi = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_TCPIPPrinterPort") 
40.
        $wmi.psbase.scope.options.enablePrivileges = $true 
41.
        $port = $wmi.CreateInstance() 
42.
        $port.Name = $portname 
43.
        $port.Protocol = 1  
44.
        $port.Portnumber = $txtPrinterPort.Text  
45.
        $port.HostAddress = $txtPrinterIP.Text 
46.
        $port.SNMPEnabled = $False 
47.
        $port.put() 
48.
 
49.
        #create printer instance 
50.
        $print = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_Printer").createInstance()  
51.
        $print.Drivername = $lbPrinterType.SelectedItem 
52.
        $print.PortName = $portname 
53.
        $print.Shared = $true 
54.
        $print.Published = $true 
55.
        $print.Sharename = $txtPrintername.Text 
56.
        $print.Location = $txtPrinterLocation.Text 
57.
        $print.Comment = $txtPrinterComment.Text 
58.
        $print.DeviceID = $txtPrintername.Text 
59.
        $print.put() 
60.
        return $true 
61.
     }catch{ 
62.
        return $_.Exception.Message 
63.
64.
 
65.
}  
66.
 
67.
$handler_btnOK_Click = { 
68.
     
69.
    # Drucker erstellen 
70.
    $result = &$createPrinter 
71.
     
72.
    # wenn erfolgreich ... 
73.
    $logtext = "" 
74.
    if ($result -eq $true){ 
75.
        $logtext = @" 
76.
-------- $(get-date -Format "g") ---------- Drucker auf Printserver '$($comboPrintServer.Text)' hinzugefügt: -------------- 
77.
Druckername: $($txtPrintername.Text) 
78.
IP-Adresse: $($txtPrinterIP.Text) 
79.
Port: $($txtPrinterPort.Value) 
80.
Treiber: $($lbPrinterType.SelectedItem) 
81.
Standort: $($txtPrinterLocation.Text) 
82.
Kommentar: $($txtPrinterComment.Text) 
83.
$("-"*20) 
84.
"@ 
85.
        [System.Windows.Forms.MessageBox]::Show("Der Drucker $txtPrintername wurde auf dem Printserver $($comboPrintServer.Text) angelegt.") 
86.
    }else{ 
87.
        $logtext = @" 
88.
-------- $(get-date -Format "g") ---------- !!! ACHTUNG FEHLER !! beim hinzufügen des Druckers auf Printserver '$($comboPrintServer.Text)': -------------- 
89.
Druckername: $($txtPrintername.Text) 
90.
IP-Adresse: $($txtPrinterIP.Text) 
91.
Port: $($txtPrinterPort.Value) 
92.
Treiber: $($lbPrinterType.SelectedItem) 
93.
Standort: $($txtPrinterLocation.Text) 
94.
Kommentar: $($txtPrinterComment.Text) 
95.
$("-"*20) 
96.
"@ 
97.
        [System.Windows.Forms.MessageBox]::Show("Beim Anlegen des Druckers/Ports ist ein Fehler aufgetreten: $result") 
98.
99.
    Add-Content "logfile.log" $logtext -Force 
100.
101.
 
102.
$handler_btnCancel_Click = { 
103.
    $form1.Close() 
104.
105.
 
106.
$handler_form1_Load = { 
107.
 
108.
    # add printer drivers to List 
109.
    $lbPrinterType.Items.AddRange(@( 
110.
        "HP Color LaserJet 3505", 
111.
        "HP Color LaserJet 3800", 
112.
        "HP LaserJet 1320", 
113.
        "Lexmark C510", 
114.
        "Lexmark MS510dn", 
115.
        "Lexmark C734dn", 
116.
        "Lexmark C746", 
117.
        "Lexmark E120n", 
118.
        "Lexmark E352dn", 
119.
        "Lexmark E360dn", 
120.
        "Lexmark E460dn", 
121.
        "Lexmark T420", 
122.
        "Lexmark T650", 
123.
        "Lexmark X544", 
124.
        "Kyocera Mita FS-1010", 
125.
        "Kyocera Mita FS-6020", 
126.
        "NRG 1805d 1808d 1802d", 
127.
        "NRG 1305 1308 1302", 
128.
        "NRG 2205 2238 2212", 
129.
        "NRG 3545 3518 3532", 
130.
        "NRG 6002 6005 6008", 
131.
        "NRG 7502 7505 7508", 
132.
        "NRG DSm 415", 
133.
        "NRG DSm 615", 
134.
        "NRG DSm 618", 
135.
        "NRG DSm 622", 
136.
        "NRG DSm 651", 
137.
        "NRG DSm 735", 
138.
        "NRG MP 2550", 
139.
        "NRG P 7325N", 
140.
        "Ricoh Aficio 3025", 
141.
        "Ricoh Aficio 3045", 
142.
        "Ricoh Aficio MP 5000B", 
143.
        "Ricoh Aficio MP 5500", 
144.
        "Ricoh Aficio MP 6000", 
145.
        "Ricoh Aficio MP 7500" 
146.
    )) 
147.
 
148.
    # add printservers 
149.
    $comboPrintServer.Items.AddRange(@( 
150.
        ".", 
151.
        "SERVER01", 
152.
        "SERVER02", 
153.
        "SERVER03", 
154.
        "SERVER04" 
155.
    )) 
156.
    $comboPrintServer.SelectedIndex = 0 
157.
158.
 
159.
$OnLoadForm_StateCorrection= 
160.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
161.
	$form1.WindowState = $InitialFormWindowState 
162.
163.
#---------------------------------------------- 
164.
#region Generated Form Code 
165.
$System_Drawing_Size = New-Object System.Drawing.Size 
166.
$System_Drawing_Size.Height = 472 
167.
$System_Drawing_Size.Width = 274 
168.
$form1.ClientSize = $System_Drawing_Size 
169.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
170.
$System_Drawing_Size = New-Object System.Drawing.Size 
171.
$System_Drawing_Size.Height = 500 
172.
$System_Drawing_Size.Width = 282 
173.
$form1.MinimumSize = $System_Drawing_Size 
174.
$form1.Name = "form1" 
175.
$form1.Text = "Create Printer" 
176.
$form1.add_Load($handler_form1_Load) 
177.
 
178.
$txtPrinterPort.Anchor = 9 
179.
$txtPrinterPort.DataBindings.DefaultDataSourceUpdateMode = 0 
180.
$System_Drawing_Point = New-Object System.Drawing.Point 
181.
$System_Drawing_Point.X = 186 
182.
$System_Drawing_Point.Y = 75 
183.
$txtPrinterPort.Location = $System_Drawing_Point 
184.
$txtPrinterPort.Maximum = 65536 
185.
$txtPrinterPort.Minimum = 1 
186.
$txtPrinterPort.Name = "txtPrinterPort" 
187.
$System_Drawing_Size = New-Object System.Drawing.Size 
188.
$System_Drawing_Size.Height = 20 
189.
$System_Drawing_Size.Width = 76 
190.
$txtPrinterPort.Size = $System_Drawing_Size 
191.
$txtPrinterPort.TabIndex = 2 
192.
$txtPrinterPort.TextAlign = 2 
193.
$txtPrinterPort.Value = 9100 
194.
 
195.
$form1.Controls.Add($txtPrinterPort) 
196.
 
197.
$label7.Anchor = 9 
198.
$label7.DataBindings.DefaultDataSourceUpdateMode = 0 
199.
$label7.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
200.
 
201.
$System_Drawing_Point = New-Object System.Drawing.Point 
202.
$System_Drawing_Point.X = 186 
203.
$System_Drawing_Point.Y = 58 
204.
$label7.Location = $System_Drawing_Point 
205.
$label7.Name = "label7" 
206.
$System_Drawing_Size = New-Object System.Drawing.Size 
207.
$System_Drawing_Size.Height = 23 
208.
$System_Drawing_Size.Width = 59 
209.
$label7.Size = $System_Drawing_Size 
210.
$label7.TabIndex = 11 
211.
$label7.Text = "Port" 
212.
 
213.
$form1.Controls.Add($label7) 
214.
 
215.
$comboPrintServer.Anchor = 14 
216.
$comboPrintServer.DataBindings.DefaultDataSourceUpdateMode = 0 
217.
$comboPrintServer.FormattingEnabled = $True 
218.
$System_Drawing_Point = New-Object System.Drawing.Point 
219.
$System_Drawing_Point.X = 12 
220.
$System_Drawing_Point.Y = 391 
221.
$comboPrintServer.Location = $System_Drawing_Point 
222.
$comboPrintServer.Name = "comboPrintServer" 
223.
$System_Drawing_Size = New-Object System.Drawing.Size 
224.
$System_Drawing_Size.Height = 21 
225.
$System_Drawing_Size.Width = 249 
226.
$comboPrintServer.Size = $System_Drawing_Size 
227.
$comboPrintServer.TabIndex = 6 
228.
 
229.
$form1.Controls.Add($comboPrintServer) 
230.
 
231.
$btnCancel.Anchor = 10 
232.
 
233.
$btnCancel.DataBindings.DefaultDataSourceUpdateMode = 0 
234.
 
235.
$System_Drawing_Point = New-Object System.Drawing.Point 
236.
$System_Drawing_Point.X = 186 
237.
$System_Drawing_Point.Y = 437 
238.
$btnCancel.Location = $System_Drawing_Point 
239.
$btnCancel.Name = "btnCancel" 
240.
$System_Drawing_Size = New-Object System.Drawing.Size 
241.
$System_Drawing_Size.Height = 23 
242.
$System_Drawing_Size.Width = 75 
243.
$btnCancel.Size = $System_Drawing_Size 
244.
$btnCancel.TabIndex = 8 
245.
$btnCancel.Text = "Abbrechen" 
246.
$btnCancel.UseVisualStyleBackColor = $True 
247.
$btnCancel.add_Click($handler_btnCancel_Click) 
248.
 
249.
$form1.Controls.Add($btnCancel) 
250.
 
251.
$btnOK.Anchor = 10 
252.
 
253.
$btnOK.DataBindings.DefaultDataSourceUpdateMode = 0 
254.
 
255.
$System_Drawing_Point = New-Object System.Drawing.Point 
256.
$System_Drawing_Point.X = 105 
257.
$System_Drawing_Point.Y = 437 
258.
$btnOK.Location = $System_Drawing_Point 
259.
$btnOK.Name = "btnOK" 
260.
$System_Drawing_Size = New-Object System.Drawing.Size 
261.
$System_Drawing_Size.Height = 23 
262.
$System_Drawing_Size.Width = 75 
263.
$btnOK.Size = $System_Drawing_Size 
264.
$btnOK.TabIndex = 7 
265.
$btnOK.Text = "OK" 
266.
$btnOK.UseVisualStyleBackColor = $True 
267.
$btnOK.add_Click($handler_btnOK_Click) 
268.
 
269.
$form1.Controls.Add($btnOK) 
270.
 
271.
$label6.Anchor = 6 
272.
$label6.DataBindings.DefaultDataSourceUpdateMode = 0 
273.
$label6.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
274.
 
275.
$System_Drawing_Point = New-Object System.Drawing.Point 
276.
$System_Drawing_Point.X = 11 
277.
$System_Drawing_Point.Y = 368 
278.
$label6.Location = $System_Drawing_Point 
279.
$label6.Name = "label6" 
280.
$System_Drawing_Size = New-Object System.Drawing.Size 
281.
$System_Drawing_Size.Height = 20 
282.
$System_Drawing_Size.Width = 250 
283.
$label6.Size = $System_Drawing_Size 
284.
$label6.TabIndex = 10 
285.
$label6.Text = "Erstellen auf folgendem PrintServer" 
286.
 
287.
$form1.Controls.Add($label6) 
288.
 
289.
$txtPrinterComment.Anchor = 14 
290.
$txtPrinterComment.DataBindings.DefaultDataSourceUpdateMode = 0 
291.
$System_Drawing_Point = New-Object System.Drawing.Point 
292.
$System_Drawing_Point.X = 11 
293.
$System_Drawing_Point.Y = 339 
294.
$txtPrinterComment.Location = $System_Drawing_Point 
295.
$txtPrinterComment.Name = "txtPrinterComment" 
296.
$System_Drawing_Size = New-Object System.Drawing.Size 
297.
$System_Drawing_Size.Height = 20 
298.
$System_Drawing_Size.Width = 250 
299.
$txtPrinterComment.Size = $System_Drawing_Size 
300.
$txtPrinterComment.TabIndex = 5 
301.
 
302.
$form1.Controls.Add($txtPrinterComment) 
303.
 
304.
$txtPrinterLocation.Anchor = 14 
305.
$txtPrinterLocation.DataBindings.DefaultDataSourceUpdateMode = 0 
306.
$System_Drawing_Point = New-Object System.Drawing.Point 
307.
$System_Drawing_Point.X = 12 
308.
$System_Drawing_Point.Y = 294 
309.
$txtPrinterLocation.Location = $System_Drawing_Point 
310.
$txtPrinterLocation.Name = "txtPrinterLocation" 
311.
$System_Drawing_Size = New-Object System.Drawing.Size 
312.
$System_Drawing_Size.Height = 20 
313.
$System_Drawing_Size.Width = 251 
314.
$txtPrinterLocation.Size = $System_Drawing_Size 
315.
$txtPrinterLocation.TabIndex = 4 
316.
 
317.
$form1.Controls.Add($txtPrinterLocation) 
318.
 
319.
$label4.Anchor = 6 
320.
$label4.DataBindings.DefaultDataSourceUpdateMode = 0 
321.
$label4.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
322.
 
323.
$System_Drawing_Point = New-Object System.Drawing.Point 
324.
$System_Drawing_Point.X = 11 
325.
$System_Drawing_Point.Y = 275 
326.
$label4.Location = $System_Drawing_Point 
327.
$label4.Name = "label4" 
328.
$System_Drawing_Size = New-Object System.Drawing.Size 
329.
$System_Drawing_Size.Height = 23 
330.
$System_Drawing_Size.Width = 169 
331.
$label4.Size = $System_Drawing_Size 
332.
$label4.TabIndex = 6 
333.
$label4.Text = "Standort" 
334.
 
335.
$form1.Controls.Add($label4) 
336.
 
337.
$lbPrinterType.Anchor = 15 
338.
$lbPrinterType.DataBindings.DefaultDataSourceUpdateMode = 0 
339.
$lbPrinterType.FormattingEnabled = $True 
340.
$System_Drawing_Point = New-Object System.Drawing.Point 
341.
$System_Drawing_Point.X = 12 
342.
$System_Drawing_Point.Y = 133 
343.
$lbPrinterType.Location = $System_Drawing_Point 
344.
$lbPrinterType.Name = "lbPrinterType" 
345.
$System_Drawing_Size = New-Object System.Drawing.Size 
346.
$System_Drawing_Size.Height = 121 
347.
$System_Drawing_Size.Width = 250 
348.
$lbPrinterType.Size = $System_Drawing_Size 
349.
$lbPrinterType.TabIndex = 3 
350.
 
351.
$form1.Controls.Add($lbPrinterType) 
352.
 
353.
$txtPrinterIP.Anchor = 13 
354.
$txtPrinterIP.DataBindings.DefaultDataSourceUpdateMode = 0 
355.
$System_Drawing_Point = New-Object System.Drawing.Point 
356.
$System_Drawing_Point.X = 12 
357.
$System_Drawing_Point.Y = 75 
358.
$txtPrinterIP.Location = $System_Drawing_Point 
359.
$txtPrinterIP.Name = "txtPrinterIP" 
360.
$System_Drawing_Size = New-Object System.Drawing.Size 
361.
$System_Drawing_Size.Height = 20 
362.
$System_Drawing_Size.Width = 168 
363.
$txtPrinterIP.Size = $System_Drawing_Size 
364.
$txtPrinterIP.TabIndex = 1 
365.
 
366.
$form1.Controls.Add($txtPrinterIP) 
367.
 
368.
$txtPrintername.Anchor = 13 
369.
$txtPrintername.DataBindings.DefaultDataSourceUpdateMode = 0 
370.
$System_Drawing_Point = New-Object System.Drawing.Point 
371.
$System_Drawing_Point.X = 12 
372.
$System_Drawing_Point.Y = 26 
373.
$txtPrintername.Location = $System_Drawing_Point 
374.
$txtPrintername.Name = "txtPrintername" 
375.
$System_Drawing_Size = New-Object System.Drawing.Size 
376.
$System_Drawing_Size.Height = 20 
377.
$System_Drawing_Size.Width = 250 
378.
$txtPrintername.Size = $System_Drawing_Size 
379.
$txtPrintername.TabIndex = 0 
380.
 
381.
$form1.Controls.Add($txtPrintername) 
382.
 
383.
$label3.DataBindings.DefaultDataSourceUpdateMode = 0 
384.
$label3.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
385.
 
386.
$System_Drawing_Point = New-Object System.Drawing.Point 
387.
$System_Drawing_Point.X = 11 
388.
$System_Drawing_Point.Y = 107 
389.
$label3.Location = $System_Drawing_Point 
390.
$label3.Name = "label3" 
391.
$System_Drawing_Size = New-Object System.Drawing.Size 
392.
$System_Drawing_Size.Height = 23 
393.
$System_Drawing_Size.Width = 100 
394.
$label3.Size = $System_Drawing_Size 
395.
$label3.TabIndex = 2 
396.
$label3.Text = "Druckertyp" 
397.
 
398.
$form1.Controls.Add($label3) 
399.
 
400.
$label2.DataBindings.DefaultDataSourceUpdateMode = 0 
401.
$label2.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
402.
 
403.
$System_Drawing_Point = New-Object System.Drawing.Point 
404.
$System_Drawing_Point.X = 11 
405.
$System_Drawing_Point.Y = 58 
406.
$label2.Location = $System_Drawing_Point 
407.
$label2.Name = "label2" 
408.
$System_Drawing_Size = New-Object System.Drawing.Size 
409.
$System_Drawing_Size.Height = 23 
410.
$System_Drawing_Size.Width = 100 
411.
$label2.Size = $System_Drawing_Size 
412.
$label2.TabIndex = 1 
413.
$label2.Text = "IP-Adresse" 
414.
 
415.
$form1.Controls.Add($label2) 
416.
 
417.
$label1.DataBindings.DefaultDataSourceUpdateMode = 0 
418.
$label1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
419.
 
420.
$System_Drawing_Point = New-Object System.Drawing.Point 
421.
$System_Drawing_Point.X = 12 
422.
$System_Drawing_Point.Y = 9 
423.
$label1.Location = $System_Drawing_Point 
424.
$label1.Name = "label1" 
425.
$System_Drawing_Size = New-Object System.Drawing.Size 
426.
$System_Drawing_Size.Height = 23 
427.
$System_Drawing_Size.Width = 100 
428.
$label1.Size = $System_Drawing_Size 
429.
$label1.TabIndex = 0 
430.
$label1.Text = "Druckername" 
431.
 
432.
$form1.Controls.Add($label1) 
433.
 
434.
$label5.Anchor = 6 
435.
$label5.DataBindings.DefaultDataSourceUpdateMode = 0 
436.
$label5.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
437.
 
438.
$System_Drawing_Point = New-Object System.Drawing.Point 
439.
$System_Drawing_Point.X = 11 
440.
$System_Drawing_Point.Y = 321 
441.
$label5.Location = $System_Drawing_Point 
442.
$label5.Name = "label5" 
443.
$System_Drawing_Size = New-Object System.Drawing.Size 
444.
$System_Drawing_Size.Height = 23 
445.
$System_Drawing_Size.Width = 169 
446.
$label5.Size = $System_Drawing_Size 
447.
$label5.TabIndex = 9 
448.
$label5.Text = "Kommentar" 
449.
 
450.
$form1.Controls.Add($label5) 
451.
 
452.
#endregion Generated Form Code 
453.
 
454.
#Save the initial state of the form 
455.
$InitialFormWindowState = $form1.WindowState 
456.
#Init the OnLoad event to correct the initial state of the form 
457.
$form1.add_Load($OnLoadForm_StateCorrection) 
458.
#Show the Form 
459.
$form1.ShowDialog()| Out-Null 
460.
 
461.
} #End Function 
462.
 
463.
#Call the Function 
464.
GenerateForm
Grüße Uwe
Bitte warten ..
Mitglied: pixel0815
01.12.2014 um 19:59 Uhr
Servus ihr zwei,

das ist ja eine tolle Weiterentwicklung
Ich erhalte beispielsweise auf dem Printserver folgende Meldung. Die Drucker werden erstellt.

Auf dem PS habe ich PS 2.0 und auf meinem Laptop 3.0
Benötige ich eine andere Version dafür?

01.
Der Typ [System.Windows.MessageBox] kann nicht gefunden werden: Stellen Sie sicher, dass die Assembly, die diesen Typ e 
02.
nthält, geladen wird. 
03.
Bei C:\Users\*****\Desktop\Drucker_GUIps1:85 Zeichen:36 
04.
+         [System.Windows.MessageBox] <<<< ::Show("Der Drucker $txtPrintername wurde auf dem Printserver $($comboPrintS 
05.
erver.Text) angelegt.") 
06.
    + CategoryInfo          : InvalidOperation: (System.Windows.MessageBox:String) [], RuntimeException 
07.
    + FullyQualifiedErrorId : TypeNotFound
Bitte warten ..
Mitglied: colinardo
01.12.2014, aktualisiert um 20:05 Uhr
Hallo Heiko,
sorry Tippfehler, falsches Assembly verwendet . ist oben korrigiert.

Sollte eigentlich dieses sein:
[System.Windows.Forms.MessageBox]
Grüße Uwe

p.s. ich gebe den Fehler der Code-Completion
Bitte warten ..
Mitglied: pixel0815
01.12.2014, aktualisiert um 20:15 Uhr
Korrekt. Nu klappts.
Habe sogar remote einen Drucker auf dem Printserver anlegen können.
Das ist ein Tool das hier einen Admins sicherlich gefallen wird :o)

So hab ich mir das gedanklich vorgestellt. War ja froh das dass Skript aus dem Technet zum laufen gebracht wurde.
Das ist jetzt die SUPER Version von diesem Ding. :o)
Bitte warten ..
Mitglied: Pago159
02.12.2014 um 10:24 Uhr
Hallo colinardo, danke schon mal für die Hilfe.

Leider läuft das Script bei mir in den ErrorHandler mit folgender Meldung:

Beim Anlegen des Druckers/Ports ist ein Fehler aufgetreten:
\\printserver\ROOT\cimv2:Win32_TCPIPPrinterPort.Name="IP_IP-Adresse"
Ausnahme beim Aufruf von "Put" mit 0 Argument(en): "Allgemeiner Fehler"

Kann es sein, dass das Script für ein x64 System andere Klassen benutzt um den Port zu erstellen?
Bitte warten ..
Mitglied: colinardo
02.12.2014, aktualisiert um 10:28 Uhr
Zitat von Pago159:
Leider läuft das Script bei mir in den ErrorHandler mit folgender Meldung:

Beim Anlegen des Druckers/Ports ist ein Fehler aufgetreten:
\\printserver\ROOT\cimv2:Win32_TCPIPPrinterPort.Name="IP_IP-Adresse"
Ausnahme beim Aufruf von "Put" mit 0 Argument(en): "Allgemeiner Fehler"

Kann es sein, dass das Script für ein x64 System andere Klassen benutzt um den Port zu erstellen?
Nein, sehr wahrscheinlich hast du den Druckertreiber auf dem Printserver noch nicht installiert. Dieser Fall ließe sich ebenfalls noch mit einbinden:
http://www.adminarsenal.com/admin-arsenal-blog/how-to-add-printers-with ...

Lass ich dir mal als Hausaufgabe

Grüße Uwe
Bitte warten ..
Mitglied: Pago159
04.12.2014, aktualisiert um 15:02 Uhr
OK, das mit den Treibern wird erst mal hinten angestellt, da ich dort dann Schleifen einbinden müsste, dafür bin ich nicht so gut geeignet.
Ich Teste jetzt gerade mit dem löschen von Druckerobjekten und habe noch einen Button "Löschen" eingebunden, über den dann folgender Schnipsel aufgerufen wird:

01.
#delete printer instance 
02.
	$p = Get-WmiObject -Class Win32_printer -ComputerName $printserver -namespace "root\CIMV2" -filter "Sharename='$txtPrintername.Text'" 
03.
        $p.delete()
Bei der Ausführung erhalte ich allerdings folgenden Fehler:
Bein löschen des Druckers/Ports ist ein Fehler aufgetreten:
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.

Get-WmiObject : Ungültige Klasse
Bei \\PfadzurDate\deletePrinter.ps1:48 Zeichen:21
$p = Get-WmiObject <<<< -Class Win32_printer -Computername $printserver -namespace "root\CIMV2" -filter "Sharename='$txtPrintername.Text'"
(+) CategoryInfo: InvalidOperation: (: ) [Get-WmiObject], ManagementException
(+) FullyQUalifiedErrorId: GetWMIManagementException, Microsoft.PowerShell.Commands.GetWmiObjectCommand
Bitte warten ..
Mitglied: colinardo
04.12.2014, aktualisiert um 15:45 Uhr
die Angabe im WMI-Filter geht so nicht mit Angabe einer Property von einem Objekt ...
01.
# delete printer instance 
02.
$sharename = $txtPrintername.Text 
03.
Get-WmiObject Win32_Printer -ComputerName $printserver -filter "Sharename='$sharename'" | %{$_.Delete()}
Bitte warten ..
Mitglied: Pago159
05.12.2014, aktualisiert um 09:12 Uhr
Danke colinardo für die schnelle Hilfe, ich merke immer wieder dass ich noch sehr viel zu lernen habe.

Allerdings habe ich noch ein weiteres Problem, was meine Skriptausführung behindert.

Der start des Skriptes erfolgt auf einem Win7 Client inkl. SP und allen Patches.
Server1 ist ein W2K8 R2
Server2 ist ein W2k8 R2

Beide Server haben den selben Patch stand.

Auf Server1 liefert die Abfrage "Get-WmiObject Win32_Printer" alle installierten Drucker.
Auf Server2 liefert die Abfrage "Get-WmiObject Win32_Printer" allerdings die Fehlermeldung, dass die WMI KLasse nicht gefunden werden kann.

Die Abfrage "Get-WmiObject -List -Namespace root\cimv2 -class *print* liefert auf Server1 folgende Liste:
<List>
Win32_PrinterConfiguration
Win32_PrinterSetting
Win32_Printrob
CIM_Printer
Win32_Printer
Win32_PrinterDriver
Win32_TCPIPPrinterPort
Win32_PrinterShare
Win32_PrinterDriverDll
Win32_PrinterController
</List>
Die Abfrage "Get-WmiObject -List -Namespace root\cimv2 -class *print* liefert auf Server2 folgende Liste:
<List>
Win32_PrinterConfiguration
Win32_PrinterSetting
Win32_PrintJob
CIM_Printer

Win32_PrinterDriver
Win32_TCPIPPrinterPort
Win32_PrinterShare
Win32_PrinterDriverDll
Win32_PrinterController
</List>
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 09:10 Uhr
Zitat von Pago159:
Auf Server2 liefert die Abfrage "Get-WmiObject Win32_Printer" allerdings die Fehlermeldung, dass die WMI KLasse nicht gefunden werden kann.
Dann hat's auf diesem Server sehr wahrscheinlich das WMI Repository zerschossen, oder eine der benötigten DLLs ist nicht mehr richtig registriert.
Hier findest du ein Script um das zu fixen:
https://social.technet.microsoft.com/Forums/windowsserver/en-US/68310b21 ...

Grüße Uwe
Bitte warten ..
Mitglied: Pago159
05.12.2014 um 12:15 Uhr
Hallo colinardo,

kann es sein, dass dieses Code-Schnipsel die Win32_Printer Klasse löscht, anstatt dem Druckerobjekt?
01.
# delete printer instance 
02.
$sharename = $txtPrintername.Text 
03.
Get-WmiObject Win32_Printer -ComputerName $printserver -filter "Sharename='$sharename'" | %{$_.Delete()}
Bitte warten ..
Mitglied: Pago159
05.12.2014 um 12:16 Uhr
Ich habe das ganze jetzt mal noch auf einem anderen Server getestet, bei dem die Abfragen vorher geklappt haben, nach dem Löschversuch allerdings war die Klasse weg und es konnte keine Abfrage mehr erstellt werden.
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 12:56 Uhr
Zitat von Pago159:
kann es sein, dass dieses Code-Schnipsel die Win32_Printer Klasse löscht, anstatt dem Druckerobjekt?
Hallo Pago,
das wäre mit absolut neu, kann ich hier auch testweise nicht bestätigen. Da stimmt an deinem Script irgendwas nicht.
Bitte warten ..
Mitglied: Pago159
05.12.2014 um 13:46 Uhr
Ich habe das ganze jetzt mal ein bisschen weiter angepasst,
das Löschen von Druckern funktioniert auch, leider habe ich es noch nicht hin bekommen, den TCPIPPrinterPort zu löschen.

01.
function GenerateForm { 
02.
 
03.
#region Import the Assemblies 
04.
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
05.
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
06.
#endregion 
07.
 
08.
#region Generated Form Objects 
09.
$form1 = New-Object System.Windows.Forms.Form 
10.
$txtPrinterPort = New-Object System.Windows.Forms.NumericUpDown 
11.
$label7 = New-Object System.Windows.Forms.Label 
12.
$comboPrintServer = New-Object System.Windows.Forms.ComboBox 
13.
$btnCancel = New-Object System.Windows.Forms.Button 
14.
$btnOK = New-Object System.Windows.Forms.Button 
15.
$btnDel = New-Object System.Windows.Forms.Button 
16.
$label6 = New-Object System.Windows.Forms.Label 
17.
$txtPrinterComment = New-Object System.Windows.Forms.TextBox 
18.
$txtPrinterLocation = New-Object System.Windows.Forms.TextBox 
19.
$label4 = New-Object System.Windows.Forms.Label 
20.
$lbPrinterType = New-Object System.Windows.Forms.ListBox 
21.
$txtPrinterIP = New-Object System.Windows.Forms.TextBox 
22.
$txtPrintername = New-Object System.Windows.Forms.TextBox 
23.
$label3 = New-Object System.Windows.Forms.Label 
24.
$label2 = New-Object System.Windows.Forms.Label 
25.
$label1 = New-Object System.Windows.Forms.Label 
26.
$label5 = New-Object System.Windows.Forms.Label 
27.
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
28.
#endregion Generated Form Objects 
29.
 
30.
#---------------------------------------------- 
31.
# Event Script Blocks 
32.
#---------------------------------------------- 
33.
 
34.
# Pfad zur Logdatei (Pfad und Datei müssen existieren) 
35.
$logfile = "C:\Logs\AddPrinter\logfile.log" 
36.
 
37.
$deletePrinter = { 
38.
	Try{ 
39.
		$printserver = $comboPrintServer.Text 
40.
        $portname = "IP_$($txtPrinterIP.Text)" 
41.
		 
42.
		# delete printer Port (nicht lauffähig, daher auskommentiert) 
43.
		 
44.
		#$name = $txtPrinterIP.Text 
45.
		#$DelPort = Get-WMIObject -computer $printserver -query "Select * From Win32_TCPIPPrinterPort Where HostAdress = '$name'" 
46.
		#$DelPort.delete() 
47.
		 
48.
		 
49.
		# delete printer instance (Printerport "TCP/IP" bleibt weiter bestehen) 
50.
		$sharename = $txtPrintername.Text 
51.
        $DelPrinter = Get-WMIObject -computer $printserver -query "Select * From Win32_Printer Where Name = '$sharename'" 
52.
		$DelPrinter.delete() 
53.
		 
54.
        return $true 
55.
		}catch{ 
56.
        return $_.Exception.Message 
57.
58.
 
59.
				}  
60.
 
61.
				$handler_btnDel_Click = { 
62.
     
63.
    # Drucker löschen 
64.
    $result = &$deletePrinter 
65.
     
66.
    # wenn erfolgreich gelöscht ... 
67.
    $logtext = "" 
68.
    if ($result -eq $true){ 
69.
        $logtext = @" 
70.
-------- $(get-date -Format "g") ---------- Drucker wurde auf dem Printserver '$($comboPrintServer.Text)' gelöscht: -------------- 
71.
Druckername: $($txtPrintername.Text) 
72.
IP-Adresse: $($txtPrinterIP.Text) 
73.
Port: $($txtPrinterPort.Value) 
74.
Treiber: $($lbPrinterType.SelectedItem) 
75.
Standort: $($txtPrinterLocation.Text) 
76.
Kommentar: $($txtPrinterComment.Text) 
77.
$("-"*20) 
78.
"@ 
79.
        [System.Windows.Forms.MessageBox]::Show("Der Drucker $txtPrintername wurde auf dem Printserver $($comboPrintServer.Text) gelöscht.") 
80.
    }else{ 
81.
    # wenn Fehler beim löschen... 
82.
        $logtext = @" 
83.
-------- $(get-date -Format "g") ---------- !!! ACHTUNG FEHLER !! beim löschen des Druckers auf Printserver '$($comboPrintServer.Text)': -------------- 
84.
Druckername: $($txtPrintername.Text) 
85.
IP-Adresse: $($txtPrinterIP.Text) 
86.
Port: $($txtPrinterPort.Value) 
87.
Treiber: $($lbPrinterType.SelectedItem) 
88.
Standort: $($txtPrinterLocation.Text) 
89.
Kommentar: $($txtPrinterComment.Text) 
90.
$("-"*20) 
91.
"@ 
92.
        [System.Windows.Forms.MessageBox]::Show("Beim löschen des Druckers/Ports ist ein Fehler aufgetreten: $result") 
93.
94.
    # Add-Content "logfile.log" $logtext -Force 
95.
    Add-Content "$logfile" $logtext -Force 
96.
97.
$createPrinter = { 
98.
 
99.
    Try{ 
100.
        $printserver = $comboPrintServer.Text 
101.
        $portname = "IP_$($txtPrinterIP.Text)" 
102.
     
103.
        # create printer port 
104.
        $wmi = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_TCPIPPrinterPort") 
105.
        $wmi.psbase.scope.options.enablePrivileges = $true 
106.
        $port = $wmi.CreateInstance() 
107.
        $port.Name = $portname 
108.
        $port.Protocol = 1  
109.
        $port.Portnumber = $txtPrinterPort.Text  
110.
        $port.HostAddress = $txtPrinterIP.Text 
111.
        $port.SNMPEnabled = $False 
112.
        $port.put() 
113.
 
114.
        #create printer instance 
115.
        $print = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_Printer").createInstance()  
116.
        $print.Drivername = $lbPrinterType.SelectedItem 
117.
        $print.PortName = $portname 
118.
        $print.Shared = $true 
119.
        $print.Published = $true 
120.
        $print.Sharename = $txtPrintername.Text 
121.
        $print.Location = $txtPrinterLocation.Text 
122.
        $print.Comment = $txtPrinterComment.Text 
123.
        $print.DeviceID = $txtPrintername.Text 
124.
        $print.put() 
125.
        return $true 
126.
     }catch{ 
127.
        return $_.Exception.Message 
128.
129.
 
130.
}  
131.
 
132.
 
133.
$handler_btnOK_Click = { 
134.
     
135.
    # Drucker erstellen 
136.
    $result = &$createPrinter 
137.
     
138.
    # wenn erfolgreich erstellt... 
139.
    $logtext = "" 
140.
    if ($result -eq $true){ 
141.
        $logtext = @" 
142.
-------- $(get-date -Format "g") ---------- Drucker auf Printserver '$($comboPrintServer.Text)' hinzugefügt: -------------- 
143.
Druckername: $($txtPrintername.Text) 
144.
IP-Adresse: $($txtPrinterIP.Text) 
145.
Port: $($txtPrinterPort.Value) 
146.
Treiber: $($lbPrinterType.SelectedItem) 
147.
Standort: $($txtPrinterLocation.Text) 
148.
Kommentar: $($txtPrinterComment.Text) 
149.
$("-"*20) 
150.
"@ 
151.
        [System.Windows.Forms.MessageBox]::Show("Der Drucker $txtPrintername wurde auf dem Printserver $($comboPrintServer.Text) angelegt.") 
152.
    }else{ 
153.
    # wenn Fehler beim erstellen... 
154.
        $logtext = @" 
155.
-------- $(get-date -Format "g") ---------- !!! ACHTUNG FEHLER !! beim hinzufügen des Druckers auf Printserver '$($comboPrintServer.Text)': -------------- 
156.
Druckername: $($txtPrintername.Text) 
157.
IP-Adresse: $($txtPrinterIP.Text) 
158.
Port: $($txtPrinterPort.Value) 
159.
Treiber: $($lbPrinterType.SelectedItem) 
160.
Standort: $($txtPrinterLocation.Text) 
161.
Kommentar: $($txtPrinterComment.Text) 
162.
$("-"*20) 
163.
"@ 
164.
        [System.Windows.Forms.MessageBox]::Show("Beim Anlegen des Druckers/Ports ist ein Fehler aufgetreten: $result") 
165.
166.
    # Add-Content "logfile.log" $logtext -Force 
167.
    Add-Content "$logfile" $logtext -Force 
168.
169.
 
170.
$handler_btnCancel_Click = { 
171.
    $form1.Close() 
172.
173.
 
174.
$handler_form1_Load = { 
175.
 
176.
    # add printer drivers to List (must be exist on Printserver with this name) 
177.
    $lbPrinterType.Items.AddRange(@( 
178.
        #"HP Color LaserJet 3505", 
179.
        #"HP Color LaserJet 3800", 
180.
        "HP LaserJet 1320 PCL 6", 
181.
	"HP Universal Printing PCL 6", 
182.
        "Lexmark MS510 Series XL" 
183.
        "Lexmark C734 XL", 
184.
        "Lexmark E360dn XL", 
185.
        "Lexmark E460dn XL", 
186.
        "Lexmark T650", 
187.
        "Lexmark X544 XL", 
188.
	"Lexmark Universal v2 XL",  
189.
        "NRG 2205/2238/2212 PCL 6", 
190.
        "NRG 6002/6005/6008 PCL6", 
191.
        "NRG MP 2550 PCL6", 
192.
        "RICOH Aficio 3045 PCL 6", 
193.
	"RICOH Aficio MP 4500 PCL 5e", 
194.
        "Ricoh Aficio MP 5500 PCL", 
195.
        "RICOH Aficio MP 7500 PCL 6"  
196.
    )) 
197.
 
198.
    # add printservers (EIGENE SERVER MÜSSEN EINGETRAGEN WERDEN) 
199.
    $comboPrintServer.Items.AddRange(@( 
200.
         ".", 
201.
        "Server01", 
202.
        "Server02", 
203.
        "Server03" 
204.
		 
205.
    )) 
206.
    $comboPrintServer.SelectedIndex = 0 
207.
208.
 
209.
$OnLoadForm_StateCorrection= 
210.
{#Correct the initial state of the form to prevent the .Net maximized form issue 
211.
	$form1.WindowState = $InitialFormWindowState 
212.
213.
#---------------------------------------------- 
214.
#region Generated Form Code 
215.
$System_Drawing_Size = New-Object System.Drawing.Size 
216.
$System_Drawing_Size.Height = 472 
217.
$System_Drawing_Size.Width = 274 
218.
$form1.ClientSize = $System_Drawing_Size 
219.
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
220.
$System_Drawing_Size = New-Object System.Drawing.Size 
221.
$System_Drawing_Size.Height = 500 
222.
$System_Drawing_Size.Width = 282 
223.
$form1.MinimumSize = $System_Drawing_Size 
224.
$form1.Name = "form1" 
225.
$form1.Text = "PrinterAdd - Script" 
226.
$form1.add_Load($handler_form1_Load) 
227.
 
228.
$txtPrinterPort.Anchor = 9 
229.
$txtPrinterPort.DataBindings.DefaultDataSourceUpdateMode = 0 
230.
$System_Drawing_Point = New-Object System.Drawing.Point 
231.
$System_Drawing_Point.X = 186 
232.
$System_Drawing_Point.Y = 75 
233.
$txtPrinterPort.Location = $System_Drawing_Point 
234.
$txtPrinterPort.Maximum = 65536 
235.
$txtPrinterPort.Minimum = 1 
236.
$txtPrinterPort.Name = "txtPrinterPort" 
237.
$System_Drawing_Size = New-Object System.Drawing.Size 
238.
$System_Drawing_Size.Height = 20 
239.
$System_Drawing_Size.Width = 76 
240.
$txtPrinterPort.Size = $System_Drawing_Size 
241.
$txtPrinterPort.TabIndex = 2 
242.
$txtPrinterPort.TextAlign = 2 
243.
$txtPrinterPort.Value = 9100 
244.
 
245.
$form1.Controls.Add($txtPrinterPort) 
246.
 
247.
$label7.Anchor = 9 
248.
$label7.DataBindings.DefaultDataSourceUpdateMode = 0 
249.
$label7.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
250.
 
251.
$System_Drawing_Point = New-Object System.Drawing.Point 
252.
$System_Drawing_Point.X = 186 
253.
$System_Drawing_Point.Y = 58 
254.
$label7.Location = $System_Drawing_Point 
255.
$label7.Name = "label7" 
256.
$System_Drawing_Size = New-Object System.Drawing.Size 
257.
$System_Drawing_Size.Height = 23 
258.
$System_Drawing_Size.Width = 59 
259.
$label7.Size = $System_Drawing_Size 
260.
$label7.TabIndex = 11 
261.
$label7.Text = "Port" 
262.
 
263.
$form1.Controls.Add($label7) 
264.
 
265.
$comboPrintServer.Anchor = 14 
266.
$comboPrintServer.DataBindings.DefaultDataSourceUpdateMode = 0 
267.
$comboPrintServer.FormattingEnabled = $True 
268.
$System_Drawing_Point = New-Object System.Drawing.Point 
269.
$System_Drawing_Point.X = 12 
270.
$System_Drawing_Point.Y = 391 
271.
$comboPrintServer.Location = $System_Drawing_Point 
272.
$comboPrintServer.Name = "comboPrintServer" 
273.
$System_Drawing_Size = New-Object System.Drawing.Size 
274.
$System_Drawing_Size.Height = 21 
275.
$System_Drawing_Size.Width = 249 
276.
$comboPrintServer.Size = $System_Drawing_Size 
277.
$comboPrintServer.TabIndex = 6 
278.
 
279.
$form1.Controls.Add($comboPrintServer) 
280.
 
281.
$btnCancel.Anchor = 10 
282.
 
283.
$btnCancel.DataBindings.DefaultDataSourceUpdateMode = 0 
284.
 
285.
$System_Drawing_Point = New-Object System.Drawing.Point 
286.
$System_Drawing_Point.X = 186 
287.
$System_Drawing_Point.Y = 437 
288.
$btnCancel.Location = $System_Drawing_Point 
289.
$btnCancel.Name = "btnCancel" 
290.
$System_Drawing_Size = New-Object System.Drawing.Size 
291.
$System_Drawing_Size.Height = 23 
292.
$System_Drawing_Size.Width = 75 
293.
$btnCancel.Size = $System_Drawing_Size 
294.
$btnCancel.TabIndex = 8 
295.
$btnCancel.Text = "Abbrechen" 
296.
$btnCancel.UseVisualStyleBackColor = $True 
297.
$btnCancel.add_Click($handler_btnCancel_Click) 
298.
 
299.
$form1.Controls.Add($btnCancel) 
300.
 
301.
 
302.
$btnOK.Anchor = 10 
303.
 
304.
$btnOK.DataBindings.DefaultDataSourceUpdateMode = 0 
305.
 
306.
$System_Drawing_Point = New-Object System.Drawing.Point 
307.
$System_Drawing_Point.X = 105 
308.
$System_Drawing_Point.Y = 437 
309.
$btnOK.Location = $System_Drawing_Point 
310.
$btnOK.Name = "btnOK" 
311.
$System_Drawing_Size = New-Object System.Drawing.Size 
312.
$System_Drawing_Size.Height = 23 
313.
$System_Drawing_Size.Width = 75 
314.
$btnOK.Size = $System_Drawing_Size 
315.
$btnOK.TabIndex = 7 
316.
$btnOK.Text = "Erstellen" 
317.
$btnOK.UseVisualStyleBackColor = $True 
318.
$btnOK.add_Click($handler_btnOK_Click) 
319.
 
320.
$form1.Controls.Add($btnOK) 
321.
 
322.
$btnDel.Anchor = 10 
323.
 
324.
 
325.
$btnDel.DataBindings.DefaultDataSourceUpdateMode = 0 
326.
 
327.
$System_Drawing_Point = New-Object System.Drawing.Point 
328.
$System_Drawing_Point.X = 25 
329.
$System_Drawing_Point.Y = 437 
330.
$btnDel.Location = $System_Drawing_Point 
331.
$btnDel.Name = "btnDel" 
332.
$System_Drawing_Size = New-Object System.Drawing.Size 
333.
$System_Drawing_Size.Height = 23 
334.
$System_Drawing_Size.Width = 75 
335.
$btnDel.Size = $System_Drawing_Size 
336.
$btnDel.TabIndex = 11 
337.
$btnDel.Text = "Löschen" 
338.
$btnDel.UseVisualStyleBackColor = $True 
339.
$btnDel.add_Click($handler_btnDel_Click) 
340.
 
341.
$form1.Controls.Add($btnDel) 
342.
 
343.
 
344.
$label6.Anchor = 6 
345.
$label6.DataBindings.DefaultDataSourceUpdateMode = 0 
346.
$label6.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
347.
 
348.
$System_Drawing_Point = New-Object System.Drawing.Point 
349.
$System_Drawing_Point.X = 11 
350.
$System_Drawing_Point.Y = 368 
351.
$label6.Location = $System_Drawing_Point 
352.
$label6.Name = "label6" 
353.
$System_Drawing_Size = New-Object System.Drawing.Size 
354.
$System_Drawing_Size.Height = 20 
355.
$System_Drawing_Size.Width = 250 
356.
$label6.Size = $System_Drawing_Size 
357.
$label6.TabIndex = 10 
358.
$label6.Text = "Erstellen auf folgendem PrintServer" 
359.
 
360.
$form1.Controls.Add($label6) 
361.
 
362.
 
363.
$txtPrinterComment.Anchor = 14 
364.
$txtPrinterComment.DataBindings.DefaultDataSourceUpdateMode = 0 
365.
$System_Drawing_Point = New-Object System.Drawing.Point 
366.
$System_Drawing_Point.X = 11 
367.
$System_Drawing_Point.Y = 339 
368.
$txtPrinterComment.Location = $System_Drawing_Point 
369.
$txtPrinterComment.Name = "txtPrinterComment" 
370.
$System_Drawing_Size = New-Object System.Drawing.Size 
371.
$System_Drawing_Size.Height = 20 
372.
$System_Drawing_Size.Width = 250 
373.
$txtPrinterComment.Size = $System_Drawing_Size 
374.
$txtPrinterComment.TabIndex = 5 
375.
 
376.
$form1.Controls.Add($txtPrinterComment) 
377.
 
378.
 
379.
$txtPrinterLocation.Anchor = 14 
380.
$txtPrinterLocation.DataBindings.DefaultDataSourceUpdateMode = 0 
381.
$System_Drawing_Point = New-Object System.Drawing.Point 
382.
$System_Drawing_Point.X = 12 
383.
$System_Drawing_Point.Y = 294 
384.
$txtPrinterLocation.Location = $System_Drawing_Point 
385.
$txtPrinterLocation.Name = "txtPrinterLocation" 
386.
$System_Drawing_Size = New-Object System.Drawing.Size 
387.
$System_Drawing_Size.Height = 20 
388.
$System_Drawing_Size.Width = 251 
389.
$txtPrinterLocation.Size = $System_Drawing_Size 
390.
$txtPrinterLocation.TabIndex = 4 
391.
 
392.
$form1.Controls.Add($txtPrinterLocation) 
393.
 
394.
 
395.
$label4.Anchor = 6 
396.
$label4.DataBindings.DefaultDataSourceUpdateMode = 0 
397.
$label4.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
398.
 
399.
$System_Drawing_Point = New-Object System.Drawing.Point 
400.
$System_Drawing_Point.X = 11 
401.
$System_Drawing_Point.Y = 275 
402.
$label4.Location = $System_Drawing_Point 
403.
$label4.Name = "label4" 
404.
$System_Drawing_Size = New-Object System.Drawing.Size 
405.
$System_Drawing_Size.Height = 23 
406.
$System_Drawing_Size.Width = 169 
407.
$label4.Size = $System_Drawing_Size 
408.
$label4.TabIndex = 6 
409.
$label4.Text = "Standort" 
410.
 
411.
$form1.Controls.Add($label4) 
412.
 
413.
 
414.
$lbPrinterType.Anchor = 15 
415.
$lbPrinterType.DataBindings.DefaultDataSourceUpdateMode = 0 
416.
$lbPrinterType.FormattingEnabled = $True 
417.
$System_Drawing_Point = New-Object System.Drawing.Point 
418.
$System_Drawing_Point.X = 12 
419.
$System_Drawing_Point.Y = 133 
420.
$lbPrinterType.Location = $System_Drawing_Point 
421.
$lbPrinterType.Name = "lbPrinterType" 
422.
$System_Drawing_Size = New-Object System.Drawing.Size 
423.
$System_Drawing_Size.Height = 121 
424.
$System_Drawing_Size.Width = 250 
425.
$lbPrinterType.Size = $System_Drawing_Size 
426.
$lbPrinterType.TabIndex = 3 
427.
 
428.
$form1.Controls.Add($lbPrinterType) 
429.
 
430.
 
431.
$txtPrinterIP.Anchor = 13 
432.
$txtPrinterIP.DataBindings.DefaultDataSourceUpdateMode = 0 
433.
$System_Drawing_Point = New-Object System.Drawing.Point 
434.
$System_Drawing_Point.X = 12 
435.
$System_Drawing_Point.Y = 75 
436.
$txtPrinterIP.Location = $System_Drawing_Point 
437.
$txtPrinterIP.Name = "txtPrinterIP" 
438.
$System_Drawing_Size = New-Object System.Drawing.Size 
439.
$System_Drawing_Size.Height = 20 
440.
$System_Drawing_Size.Width = 168 
441.
$txtPrinterIP.Size = $System_Drawing_Size 
442.
$txtPrinterIP.TabIndex = 1 
443.
 
444.
$form1.Controls.Add($txtPrinterIP) 
445.
 
446.
 
447.
$txtPrintername.Anchor = 13 
448.
$txtPrintername.DataBindings.DefaultDataSourceUpdateMode = 0 
449.
$System_Drawing_Point = New-Object System.Drawing.Point 
450.
$System_Drawing_Point.X = 12 
451.
$System_Drawing_Point.Y = 26 
452.
$txtPrintername.Location = $System_Drawing_Point 
453.
$txtPrintername.Name = "txtPrintername" 
454.
$System_Drawing_Size = New-Object System.Drawing.Size 
455.
$System_Drawing_Size.Height = 20 
456.
$System_Drawing_Size.Width = 250 
457.
$txtPrintername.Size = $System_Drawing_Size 
458.
$txtPrintername.TabIndex = 0 
459.
 
460.
$form1.Controls.Add($txtPrintername) 
461.
 
462.
 
463.
$label3.DataBindings.DefaultDataSourceUpdateMode = 0 
464.
$label3.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
465.
 
466.
$System_Drawing_Point = New-Object System.Drawing.Point 
467.
$System_Drawing_Point.X = 11 
468.
$System_Drawing_Point.Y = 107 
469.
$label3.Location = $System_Drawing_Point 
470.
$label3.Name = "label3" 
471.
$System_Drawing_Size = New-Object System.Drawing.Size 
472.
$System_Drawing_Size.Height = 23 
473.
$System_Drawing_Size.Width = 100 
474.
$label3.Size = $System_Drawing_Size 
475.
$label3.TabIndex = 2 
476.
$label3.Text = "Druckertyp" 
477.
 
478.
$form1.Controls.Add($label3) 
479.
 
480.
 
481.
$label2.DataBindings.DefaultDataSourceUpdateMode = 0 
482.
$label2.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
483.
 
484.
$System_Drawing_Point = New-Object System.Drawing.Point 
485.
$System_Drawing_Point.X = 11 
486.
$System_Drawing_Point.Y = 58 
487.
$label2.Location = $System_Drawing_Point 
488.
$label2.Name = "label2" 
489.
$System_Drawing_Size = New-Object System.Drawing.Size 
490.
$System_Drawing_Size.Height = 23 
491.
$System_Drawing_Size.Width = 100 
492.
$label2.Size = $System_Drawing_Size 
493.
$label2.TabIndex = 1 
494.
$label2.Text = "IP-Adresse" 
495.
 
496.
$form1.Controls.Add($label2) 
497.
 
498.
 
499.
$label1.DataBindings.DefaultDataSourceUpdateMode = 0 
500.
$label1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
501.
 
502.
$System_Drawing_Point = New-Object System.Drawing.Point 
503.
$System_Drawing_Point.X = 12 
504.
$System_Drawing_Point.Y = 9 
505.
$label1.Location = $System_Drawing_Point 
506.
$label1.Name = "label1" 
507.
$System_Drawing_Size = New-Object System.Drawing.Size 
508.
$System_Drawing_Size.Height = 23 
509.
$System_Drawing_Size.Width = 100 
510.
$label1.Size = $System_Drawing_Size 
511.
$label1.TabIndex = 0 
512.
$label1.Text = "Druckername" 
513.
 
514.
$form1.Controls.Add($label1) 
515.
 
516.
 
517.
$label5.Anchor = 6 
518.
$label5.DataBindings.DefaultDataSourceUpdateMode = 0 
519.
$label5.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) 
520.
 
521.
$System_Drawing_Point = New-Object System.Drawing.Point 
522.
$System_Drawing_Point.X = 11 
523.
$System_Drawing_Point.Y = 321 
524.
$label5.Location = $System_Drawing_Point 
525.
$label5.Name = "label5" 
526.
$System_Drawing_Size = New-Object System.Drawing.Size 
527.
$System_Drawing_Size.Height = 23 
528.
$System_Drawing_Size.Width = 169 
529.
$label5.Size = $System_Drawing_Size 
530.
$label5.TabIndex = 9 
531.
$label5.Text = "Kommentar" 
532.
 
533.
$form1.Controls.Add($label5) 
534.
 
535.
#endregion Generated Form Code 
536.
 
537.
#Save the initial state of the form 
538.
$InitialFormWindowState = $form1.WindowState 
539.
#Init the OnLoad event to correct the initial state of the form 
540.
$form1.add_Load($OnLoadForm_StateCorrection) 
541.
#Show the Form 
542.
$form1.ShowDialog()| Out-Null 
543.
 
544.
} #End Function 
545.
 
546.
#Call the Function 
547.
GenerateForm 
548.
 
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 14:06 Uhr
Erstens verwendest du die falsche Variable im Filter für den Printerport und zweitens kannst du einen Port erst löschen wenn kein Drucker den Port mehr benutzt, du musst den Drucker also vor dem Port löschen
gwmi Win32_TCPIPPrinterPort -computer $printserver -Filter "HostAddress = '$name'" | %{$_.Delete()}
Bitte warten ..
Mitglied: Pago159
05.12.2014 um 14:03 Uhr
Ok, dass der Port erst nach dem Drucker gelöscht werden kann ist logisch.
Aber wieso nutze ich die falsche Variable?

01.
#$name = $txtPrinterIP.Text  
02.
#$DelPort = Get-WMIObject -computer $printserver -query "Select * From Win32_TCPIPPrinterPort Where HostAdress = '$name'"  
03.
#$DelPort.delete() 
Ich setze doch erst die IP-Adresse in die Variable "$name" dann rufe ich das WMIObject auf und suche nach der HostAdress mit dem Ihnalt meiner Variblen $name.

Oder verstehe ich meinen Code falsch?
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 14:07 Uhr
OK sorry da lag ich falsch, hatte ich übersehen, aber du hast die Variable ja auch auskommentiert:
01.
#$name = $txtPrinterIP.Text 
Bitte warten ..
Mitglied: Pago159
05.12.2014 um 14:14 Uhr
Oh mist, das habe ich übersehen

Habe es gerade noch einmal getestet und als Ergebnis folgendes bekommen:

Beim löschen des Druckers/Ports ist ein Fehler aufgetreten:
Ausnahme beim Aufruf von "Delete" mit 0 Argument8en): "Allgemeiner Fehler"

01.
$deletePrinter = { 
02.
	Try{ 
03.
	$printserver = $comboPrintServer.Text 
04.
        $portname = "IP_$($txtPrinterIP.Text)" 
05.
		 
06.
		 
07.
		# delete printer instance (Printerport bleibt weiter bestehen) 
08.
		$sharename = $txtPrintername.Text 
09.
                $DelPrinter = Get-WMIObject -computer $printserver -query "Select * From Win32_Printer Where Name = '$sharename'" 
10.
		$DelPrinter.delete() 
11.
		 
12.
		# delete printer Port (nicht lauffähig, daher auskommentiert) 
13.
		 
14.
		$name = $txtPrinterIP.Text 
15.
		$DelPort = Get-WMIObject -computer $printserver -query "Select * From Win32_TCPIPPrinterPort Where HostAddress = '$name'" 
16.
		$DelPort.delete() 
17.
		
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 14:19 Uhr
Ausnahme beim Aufruf von "Delete" mit 0 Argument8en): "Allgemeiner Fehler"
das ist genau der Fehler wenn der Port noch nicht gelöscht werden kann weil er noch in Verwendung ist, dann musst du eventuell eine kleine Pause zwischen den Vorgängen einbauen
sleep 1

und nutze meine Zeile von oben, dann kommt kein Fehler wenn der Port schon nicht mehr existiert:
gwmi Win32_TCPIPPrinterPort -computer $printserver -Filter "HostAddress = '$name'" | %{$_.Delete()}
p.s. können wir den Thread jetzt bitte schließen, das eigentliche Thema ist ja erledigt.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Powershell Fonts installieren und existierende überschreiben (9)

Frage von zamsi7 zum Thema Batch & Shell ...

Batch & Shell
Druckertreiber per Powershell auf PC installieren - Nach CSV Vorgabe (1)

Frage von pixel0815 zum Thema Batch & Shell ...

VB for Applications
gelöst Umstellung Printserver - Drucker anlegen (3)

Frage von trynerror zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...