##### ThinPrint-Management-Services-Skript zum Generieren oder Ergänzen einer CSV-Datei für die Map-Additional-Printers-Tabelle (MAP) von AutoConnect ##### # In diesem Beispiel wird die Druckerliste von einem einzigen ThinPrint Client eingelesen. ##### Geben Sie Werte für die Variablen $csvpath, $targetserver, $agentfqdn und $clientname ein sowie optional für $mapfilter und $iprange oder $ipaddress ##### $csvpath = "C:\MAP\MAP.csv" # Pfad zur CSV-Datei von Map Additional Printers, z. B. "C:\temp\MAP.csv" $targetserver = "tpms003" # Adresse des zentralen Druckservers, z. B. "CPS003" oder "192.168.130.1" $agentfqdn = "tpms003.ourdomain.local" # FQDN des Rechners, auf dem der Tpms.Agent läuft, z. B. "CPS003.ourdomain.local" $mapfilter = 3 # Filter-Regeln: # 0 = * eintragen in die Spalten User/Group, IP Range und Client Name # 1 = IP-Bereich des Clients in die Spalte IP Range eintragen (spezifiziert mit $iprange) # 2 = IP-Adresse des Clients in die Spalte IP-Range eintragen (spezifiziert mit $ipaddress) # 3 = Hostname des Clients in die Spalte Client Name eintragen (spezifiziert mit $clientname) $iprange = "192.168.149.0/24" # Eintrag für den IP-Bereich in der Spalte IP Range, z. B. "192.168.130.0/24", wird in MAP verwenden, wenn $mapfilter = 1 $ipaddress = "192.168.149.17" # Eintrag einer einzelnen IP-Adresse in der Spalte IP Range, z. B. "192.168.130.35", wird in MAP verwendet, wenn $mapfilter = 2 $clientname = "client701" # Adresse zum Einlesen der Druckerliste vom ThinPrint Client ... # ... sowie Eintrag des Hostnames in der Spalte Client Name, z. B. "LPS025", wird in MAP verwendet, wenn $mapfilter = 3 ##### Druckerlist vom ThinPrint Client einlesen ##### $client = New-TpmsObjTpClient -Name $clientname -Port 4000 # spezifiziert die Adresse des ThinPrint Clients inkl. TCP-Port $srva = New-TpmsObjQueryAgent -Name $agentfqdn -Port 5050 -ClientQueries ($client) # spezifiziert die Adresse des Tpms.Agents inkl. TCP-Port $clientprinters = Start-TpmsQueryByAgent -Servers ($srva) | Format-TpmsDispatch # liest die Druckerliste vom ThinPrint Client $clientprinters # zeigt die Druckerliste des Clients an ##### CSV-Datei für Map Additional Printers vorbereiten ##### If( [system.io.file]::Exists($csvpath) -eq $True) # prüft, ob die CSV-Datei bereits existiert { $mapold = Get-Content $csvpath -readcount 0 # liest eine bereits existierende CSV-Datei Set-Content $csvpath -value $mapold # Fügt nach "¶" einen Zeilenumbruch ein } Else { Add-Content -path $csvpath -value "DefaultPrinter,UserGroup,IPRange,ClientName,Destination" # schreibt den Tabellenkopf, falls die Datei noch nicht existiert hat } ##### Druckerliste vom ThinPrint Client einlesen und CSV-Datei von Map Additional Printers ergänzen ##### $clientprinters | foreach { If ($_ -is [ThinPrint.Tpms.Common.TpSrcPrn]) { If ($mapfilter -eq 3) # prüft, ob $mapfilter = 3 ist { $mapnew = ([string]::Format("True,*,*,{0},\\{1}\{2}", $clientname,$targetserver,$_.Name)) # setzt die Zeilenstruktur mit Clientnamen } If ($mapfilter -eq 2) # prüft, ob $mapfilter = 2 ist { $mapnew = ([string]::Format("True,*,{0},*,\\{1}\{2}", $ipaddress,$targetserver,$_.Name)) # setzt die Zeilenstruktur mit IP-Adresse } If ($mapfilter -eq 1) # prüft, ob $mapfilter = 1 ist { $mapnew = ([string]::Format("True,*,{0},*,\\{1}\{2}", $iprange,$targetserver,$_.Name)) # setzt die Zeilenstruktur mit IP-Bereich } If ($mapfilter -eq 0) # prüft, ob $mapfilter = 0 ist { $mapnew = ([string]::Format("True,*,*,*,\\{0}\{1}", $targetserver,$_.Name)) # setzt die Zeilenstruktur auf * } Add-Content $csvpath -Value $mapnew # schreibt die Tabellenzeilen } }