Jump to content

Druckerinstallation PS Skript "problemchen"


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Slavefighter
Link zu diesem Kommentar

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).
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...