Analogamente allo script precedente in cui le stampanti connesse sono create in modo automatico a partire da un elenco contenuto in un file, lo script proposto ora, presenta una maschera, nella quale sono impostabili le informazioni principali per la creazioni di stampanti connesse su un host remoto.
Eseguendo lo script viene attivata la maschera a lato, tramite la quale è possibile connettere su un host remoto, ( o locale ) è sufficiente impostarne il nome, una stampante a sua volta condivisa su un terzo host. E’ anche possibile dichiarare un driver, a condizione che questo sia già presente sul server.
# script per la creazione remota di stampanti connesse
# Vrs. 1.0 11 gennaio 2015 Robi Massa
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”)
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = “Creazione stampante ”
$objForm.Size = New-Object System.Drawing.Size(800,400)
$objForm.StartPosition = “CenterScreen”
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq “Enter”)
{$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq “Escape”)
{$objForm.Close()}})
# crea pulsante OK
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(200,320)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = “OK”
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)
# crea pulsante Cancel
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(300,320)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = “Cancel”
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
########### Creazione delle TextBox e loro descizione #############
# crea descrizione Textbox NomePC
$objLabelNomePC = New-Object System.Windows.Forms.Label
$objLabelNomePC.Size = New-Object System.Drawing.Size(280,20)
$objLabelNomePC.Text = “Inserire il nome del pc su cui è connessa la stampante”
$objForm.Controls.Add($objLabelNomePC)
# crea Textbox NomePC
$objTextBoxNomePC = New-Object System.Windows.Forms.TextBox
$objTextBoxNomePC.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBoxNomePC)
# crea descrizione Textbox NomeStampante
$objLabelNomeStampante = New-Object System.Windows.Forms.Label
$objLabelNomeStampante.Size = New-Object System.Drawing.Size(280,20)
$objLabelNomeStampante.Text = “Inserire il nome della Share”
$objForm.Controls.Add($objLabelNomeStampante)
# crea Textbox NomeStampante
$objTextBoxNomeStampante = New-Object System.Windows.Forms.TextBox
$objTextBoxNomeStampante.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBoxNomeStampante)
# crea descrizione Textbox NomePServer
$objLabelNomePServer = New-Object System.Windows.Forms.Label
$objLabelNomePServer.Size = New-Object System.Drawing.Size(280,20)
$objLabelNomePServer.Text = “Inserire il nome del Printer Server Windows”
$objForm.Controls.Add($objLabelNomePServer)
# crea Textbox NomePServer
$objTextboxNomePServer = New-Object System.Windows.Forms.TextBox
$objTextboxNomePServer.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextboxNomePServer)
#imposto il valore di default per il Printer Server
$objTextboxNomePServer.text = “nome.dominio.locale”
# crea descrizione Textbox Commento Stampante
$objLabelCommentPRN = New-Object System.Windows.Forms.Label
$objLabelCommentPRN.Size = New-Object System.Drawing.Size(280,20)
$objLabelCommentPRN.Text = “Inserire il Commento per la Stampante Creata”
$objForm.Controls.Add($objLabelCommentPRN)
# crea Textbox Commento Stampante
$objTextboxCommentPRN = New-Object System.Windows.Forms.TextBox
$objTextboxCommentPRN.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextboxCommentPRN)
# imposto il valore di default per il Commento
$objTextboxCommentPRN.text = “Stampante ufficio centrale”
# crea descrizione Textbox Driver
$objLabelDriverPRN = New-Object System.Windows.Forms.Label
$objLabelDriverPRN.Size = New-Object System.Drawing.Size(280,40)
$objLabelDriverPRN.Text = “Inserire il Driver per la Stampante Creata N.B. il driver deve già essere caricato sul server”
$objForm.Controls.Add($objLabelDriverPRN)
# crea Textbox Driver Stampante
$objTextboxDriverPRN = New-Object System.Windows.Forms.TextBox
$objTextboxDriverPRN.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextboxDriverPRN)
#imposto il valore di default per il Driver
$objTextboxDriverPRN.text = “Generic / Text Only”
# Riporto qui le location dei vari oggetti in quanto più semplice la ridisposizione per coordinate all’interno del form
# (x,y) ( X verso DX, Y verso il BASSO)
$objLabelNomePC.Location = New-Object System.Drawing.Size(10,20)
$objTextBoxNomePC.Location = New-Object System.Drawing.Size(10,40)
$objLabelNomeStampante.Location = New-Object System.Drawing.Size(10,80)
$objTextBoxNomeStampante.Location = New-Object System.Drawing.Size(10,100)
$objLabelNomePServer.Location = New-Object System.Drawing.Size(10,140)
$objTextboxNomePServer.Location = New-Object System.Drawing.Size(10,160)
$objLabelCommentPRN.Location = New-Object System.Drawing.Size(400,20)
$objTextboxCommentPRN.Location = New-Object System.Drawing.Size(400,40)
$objLabelDriverPRN.Location = New-Object System.Drawing.Size(400,80)
$objTextboxDriverPRN.Location = New-Object System.Drawing.Size(400,120)
#####################################################################
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
#return $objTextBoxNomePC.Text, $objTextBoxNomeStampante.Text ,$objTextboxNomePServer.Text
# variabili usate per la creazione delle stampanti recuperate dalle textbox
$DriverName = $objTextboxDriverPRN.Text
$CommentPrn = $objTextboxCommentPRN.Text
$NamePrinter = $objTextBoxNomeStampante.Text
$NamePrinterPort = “\”+$objTextBoxNomePC.Text+””+$objTextBoxNomeStampante.Text
$NamePrinterserver = $objTextboxNomePServer.Text
# creazione della Porta di stampa
Add-PrinterPort -ComputerName $NamePrinterserver -Name $NamePrinterPort
# creazione della stampante e connessione alla porta creata sopra
Add-Printer -ComputerName $NamePrinterserver -Name $NamePrinter -port $NamePrinterPort -DriverName $DriverName -Comment $CommentPrn