Slavefighter 10 Geschrieben 30. Mai 2017 Melden Teilen Geschrieben 30. Mai 2017 (bearbeitet) Hallo alle Zusammen, ich habe 2 kleine Probleme bei meinem Skript: 1. Scheint er bei der Ausführung die Credentials nicht mehr zu speichern, dadurch kommt es dann dazu, dass das drucken nicht mehr möglich ist (erst das erneute einbinden des entsprechenden Druckers schafft abhilfe) 2. Kommt bei der der Treiberinstallation die Abfrage, ob man denn diesen Treiber wirklich installieren will ( Win7 - Win 10). Zum Skript: Die Infrastruktur bestehend aus X VLAN, welche sich alle im Backbone treffen wo auch der Druckerserver mit auf dem DC liegt. Die jeweilligen Drucker sind mit Fester IP in dem entsprechenden VLAN versehen und es gibt einen Dummy, der ausschließlich für das Drucken bzw das einbinden besteht. Auf dem Desktop gibt es eine einfach Batch, die das PS Skript ausführt mit einer "Grafischen" Oberfläche, wo lediglich der Raum ausgewählt werden muss, frei nach dem KISS prinzip. cmdkey /add:edu-dc /user:Druck /pass:'Pa$$w0rd' Function Druckerinstallation ($Drucker) { $user = 'Druck' $pwd = 'Pa$$w0rd' net use \\edu-dc\Oki_$Drucker $pwd /USER:$user $printerpath = "\\edu-dc\Oki_$Drucker" $net = New-Object -com WScript.Network $net.AddWindowsPrinterConnection($printerpath) if ($Drucker -eq 'Raum1'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum1"} } if ($Drucker -eq 'Raum3'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum3"} } if ($Drucker -eq 'Raum4'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum4"} } if ($Drucker -eq 'Raum6'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum6"} } if ($Drucker -eq 'Raum7'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum7"} } if ($Drucker -eq 'Raum8'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum8"} } if ($Drucker -eq 'Raum9'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum9"} } if ($Drucker -eq 'Raum10'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum10"} } if ($Drucker -eq 'Raum11'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum11"} } if ($Drucker -eq 'Raum12'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum12"} } if ($Drucker -eq 'Raum13'){ $Printer = (Get-WmiObject -Class win32_printer) | ? {$_.Name -eq "\\edu-dc\Oki_Raum13"} } $Printer.SetDefaultPrinter() } function Bestaetigung { $test=$a = new-object -comobject wscript.shell $b = $a.popup("Drucker wurde installiert",2, "Dieses Feld schließt sich automatisch",0) } function Installation { $test=$a = new-object -comobject wscript.shell $b = $a.popup("Drucker wird installiert",1, "Bitte warten",0) } function Registry { $Pfad = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" $regpfad = Test-Path $Pfad if ($regpfad -eq $FALSE) { new-item -path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" new-item -path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint" new-itemproperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint\" -name "restricted" -type dword -value -"0" } } ################################################################ registry [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") ################################################################ $objForm = New-Object System.Windows.Forms.Form $objForm.StartPosition = "CenterScreen" $objForm.Size = New-Object System.Drawing.Size(380,300) $objForm.Text = "Druckerinstallation" ################################################################ $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,20) $objLabel.Size = New-Object System.Drawing.Size(200,50) $objLabel.Text = "In welchem Raum befinden Sie sich?" $objLabel.Name = "Raumabfrage" $objForm.Controls.Add($objLabel) ################################################################ $Button1 = New-Object System.Windows.Forms.Button $Button1.Location = New-Object System.Drawing.Size(20,80) $Button1.Size = New-Object System.Drawing.Size(75,23) $Button1.Text = "Raum 1" $Button1.Add_Click({ Installation DruckerInstallation ("Raum1") Bestaetigung $objForm.Close() $objForm.Close() }) $objForm.Controls.Add($Button13) ################################################################ [void] $objForm.ShowDialog() Die Credentials sollen gespeichert werden Die Treiber(installations)abfrage soll automatisch mit "Immer Ja" bestätigt werden. Gibt es Infos / Seiten wo ich das Nachschlagen kann? oder hat vl jemand eine Idee?! LG Slave PS: Bei diesem Skript hatte ich Selbstverständlich Hilfe, doch leider steht diese "Hilfe" nicht mehr zur Verfügung. Edit: Skript abgekürzt bearbeitet 30. Mai 2017 von Slavefighter Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 30. Mai 2017 Melden Teilen Geschrieben 30. Mai 2017 Dein Skript ist etwas überdimensioniert und optimierungsbedürftig. Anstatt 20x : if ($Drucker -eq 'Raum1'){ $Printer = (Get-WmiObject -Class) | ? {$_.Name -eq "\\edu-dc\ES4132_Raum1"} } 1x das hier: $Printer = Get-WmiObject -Class win32_printer | Where-Object { $_.Name -like "\\edu-dc\ES4132_$Drucker" } Für unseren Bereich nutze ich meine geschriebene Funktion. Function Connect-Printer { param ( [string]$Druckername ) $PrintServer = '\\SRVPRINT' try { [VOID](New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$PrintServer\$Druckername") [VOID](Get-WmiObject -Class Win32_Printer | Where-Object {$_.Name -like "$PrintServer\$Druckername"}).SetDefaultPrinter() Out-File -InputObject "$(Get-Date);DRUCKER;VERBUNDEN!" -FilePath $LogPfad -Encoding default -Append Write-Host ":: Drucker '$Druckername' verbunden." -ForegroundColor Green } catch { Out-File -InputObject "$(Get-Date);DRUCKER;ERROR;$_" -FilePath $LogPfad -Encoding default -Append Write-Host ":: Drucker '$Druckername' FEHLER: $_" -ForegroundColor Red } Um die Drucker einwandfrei installieren zu lassen, benötigst du auch kein Netzwerkshare, sondern nur eine Gruppenrichtlinie die das dem Benutzer autom. erlaubt: "Point-To-Print Einschränkung" -> deaktivieren Zitat: Mit dieser Richtlinieneinstellung wird das Point-and-Print-Verhalten von Clients, einschließlich der Sicherheitshinweise für Windows Vista-Computer, gesteuert. Die Richtlinieneinstellung gilt nur für Clients ohne Druckadministrator und nur auf Computern, die Mitglieder einer Domäne sind. Wenn Sie diese Richtlinieneinstellung aktivieren, geschieht Folgendes: - Clients unter Windows XP und höher laden nur Druckertreiberkomponenten aus einer Liste explizit benannter Server herunter. Wenn ein kompatibler Druckertreiber auf dem Client verfügbar ist, wird eine Druckerverbindung hergestellt. Ist kein kompatibler Druckertreiber auf dem Client verfügbar, wird keine Verbindung hergestellt. - Clients unter Windows Vista können so konfiguriert werden, dass keine Sicherheitswarnungen oder Eingabeaufforderungen mit erhöhten Rechten angezeigt werden, wenn Benutzer Point-and-Print verwenden oder wenn Treiber für Druckerverbindungen aktualisiert werden müssen. Wenn Sie diese Richtlinieneinstellung nicht konfigurieren, geschieht Folgendes: - Clientcomputer unter Windows Vista können Point-and-Print mit jedem Server verwenden. - Auf Computern unter Windows Vista werden eine Warnung und eine Eingabeaufforderung mit erhöhten Rechten angezeigt, wenn Benutzer mit Point-and-Print eine Druckerverbindung mit einem beliebigen Server herstellen. - Auf Computern unter Windows Vista wird eine Warnung und eine Eingabeaufforderung mit erhöhten Rechten angezeigt, wenn ein Treiber für eine vorhandene Druckerverbindung aktualisiert werden muss. - Clientcomputer unter Windows Server 2003 und Windows XP können über Point-and-Print eine Druckerverbindung mit einem beliebigen Server in ihrer Gesamtstruktur herstellen. Wenn Sie diese Richtlinieneinstellung deaktivieren, geschieht Folgendes: - Clientcomputer unter Windows Vista können über Point-and-Print eine Druckerverbindung mit einem beliebigen Server herstellen. - Auf Computern unter Windows Vista wird keine Warnung oder Eingabeaufforderung mit erhöhten Rechten angezeigt, wenn Benutzer über Point-and-Print eine Druckerverbindung mit einem beliebigen Server herstellen. - Auf Computern unter Windows Vista wird keine Warnung oder Eingabeaufforderung mit erhöhten Rechten angezeigt, wenn ein Treiber für eine vorhandene Druckerverbindung aktualisiert werden muss. - Clientcomputer unter Windows Server 2003 und Windows XP können über Point-and-Print eine Druckerverbindung mit einem beliebigen Server herstellen. - Die Einstellung "Point-and-Print ist nur mit Computern der eigenen Gesamtstruktur möglich" betrifft nur Windows Server 2003 und Windows XP SP1 (und höhere Service Packs). Zitieren Link zu diesem Kommentar
Slavefighter 10 Geschrieben 31. Mai 2017 Autor Melden Teilen Geschrieben 31. Mai 2017 Vielen Dank für die Infos, werde es mal anpassen und Umbauen. LG Slave Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.