ThinPrint Management Center – Dokumentation

Allen Druckern einer Connection dasselbe Template zuweisen

123 views 0

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 Configura­tion).
  • 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.
Unterschiedliche Templates verwendet vor Ausführung des Skriptes

unterschiedliche Templates verwendet vor Ausführung des Skriptes

Skriptausführung für die Änderung des Templates einer bestimmten Connection

Skriptausführung für die Änderung des Templates einer bestimmten Connection

Dasselbe Templates verwendet nach Ausführung des Skriptes

dasselbe Templates verwendet nach Ausführung des Skriptes

 

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

Previous Page
Next Page

War dies hilfreich?