Zweck dieses PowerShell-Skriptes
Mit diesem Skript können Sie allen Drucker einer bestimmten Connection dasselbe Template zuweisen. Dies kann das Editieren der Druckerliste einer Connection beschleunigen für den Fall, dass Sie mehrere Templates für einen bestimmten Treiber angelegt haben. Gehen Sie folgendermaßen vor:
- Speichern Sie die Management-Center-Konfiguration in eine XML-Datei (mit File→ Save Configuration).
- Erzeugen Sie eine Sicherheitskopie dieser XML-Datei.
- Geben Sie in den Zeilen 4 bis 6 des Skriptes (siehe unten) folgendes an:
- den Pfad zur XML-Datei mit der Variable $Path
- den Namen der Connection mit der Variable $Connection
- den Namen des Templates mit der Variable $Template
- Nach dem Ausführen des Skriptes importieren Sie die geänderte XML-Datei ins Management Center.
PowerShell-Skript
Set-StrictMode -Version "2.0"
###### Fill in the names of Management Center export file, of the template to be assigned and of the desired Connection #####
$Path = "C:\temp\MC-export-file.xml"
$Template = "_Template_TP Output Gateway"
$Connection = "connection-name"
###### Further variables #####
$Lines = @()
$Lines1 = @()
$Lines2 = @()
$Lines3 = @()
$Lines4 = @()
$PrinterIDs = @()
###### Reading data from XML file #####
$Lines = Get-Content -path $Path -readcount 0
$output = "............... Reading the XML file .............."
$output
$output = "number of lines:"
$output
$counter1 = $Lines.length
$counter1
###### Identifying template ID and driver #####
$Lines1 = $Lines
For($i=0; $i -lt $Lines1.Count; $i+=1){
If( $Lines1[$i] | Select-String -Pattern $Template){
$TemplateId = $Lines1[$i-1]
$TemplateDriver = $Lines1[$i+1]
}
}
$match = $TemplateId -match "<TEMPLATEPRINTER_ID>([1-9][0-9]*)</TEMPLATEPRINTER_ID>"
$TemplateId = $matches[1]
$match = $TemplateDriver -match "<SERVERDRIVER_ID>([1-9][0-9]*)</SERVERDRIVER_ID>"
$TemplateDriver = $matches[1]
##### Identifying connection ID #####
$Lines2 = $Lines
$Connection = "<NAME>" + $Connection + "</NAME>"
For($i=0; $i -lt $Lines2.Count; $i+=1){
$String1 = $Lines2[$i] | Select-String -Pattern $Connection
$String2 = $Lines2[$i-1] | Select-String -Pattern "<CONNECTION_ID>([1-9]([0-9]*))</CONNECTION_ID>"
If( $Lines2[$i] -eq $String1 -and $Lines2[$i-1] -eq $String2){
$ConnectionId = $Lines2[$i-1]
}
}
$match = $ConnectionId -match "<CONNECTION_ID>([1-9]([0-9]*))</CONNECTION_ID>"
$ConnectionId = $matches[1]
##### Identifying printer IDs of this connection #####
$Lines3 = $Lines
$Pattern1 = "<FK_CONNECTION>" + $ConnectionID + "</FK_CONNECTION>"
For($i=0; $i -lt $Lines3.Count; $i+=1){
If( $Lines3[$i] | Select-String -Pattern $Pattern1){
$PrinterID = $Lines3[$i-1]
$match = $PrinterID -match "<PK_IDENTIFIER>([1-9][0-9]*)</PK_IDENTIFIER>"
$PrinterID = $matches[1]
$PrinterIDs += $PrinterID
}
}
##### Changing template ID and driver of these printers #####
$output = "............... Changing the XML file ............."
$output
$PrinterIDs | Foreach {
$Lines4 = $Lines
$Pattern2 = "<FK_CONPRINTER>" + $_ + "</FK_CONPRINTER>"
For($i=0; $i -lt $Lines4.Count; $i+=1){
If( $Lines4[$i] | Select-String -Pattern $Pattern2){
$OldTemplate = $Lines4[$i+2]
$match = $OldTemplate -match "<FK_TPLPRINTER>([1-9][0-9]*)</FK_TPLPRINTER>"
$TemplateNumber = $matches[1]
$OldDriver = $Lines4[$i+1]
$NewDriver = $OldDriver
If ($TemplateNumber -gt 0){
$NewTemplate = $OldTemplate
Foreach-Object {$NewTemplate = $NewTemplate -replace "<FK_TPLPRINTER>$TemplateNumber</FK_TPLPRINTER>","<FK_TPLPRINTER>$TemplateId</FK_TPLPRINTER>"}
Foreach-Object {$NewDriver = $NewDriver -replace "<FK_PRINTERDRV>([1-9][0-9]*)</FK_PRINTERDRV>","<FK_PRINTERDRV>$TemplateDriver</FK_PRINTERDRV>"}
$Lines4[$i+1] = $NewDriver
$Lines4[$i+2] = $NewTemplate
Set-Content -path $Path -value $Lines4
}
}
}
}
$output = "number of lines:"
$output
$number = $Lines4.length
$number
$output = ".................... Finished ....................."
$output