##### ThinPrint Management Services script for creating or supplementing CSV files for AutoConnect's Map Additional Printers table (MAP) ##### # Here, the printer list is retrieved from a single ThinPrint Client. ##### Fill in values to the variables $csvpath, $targetserver, $agentfqdn and $clientname as well as optionally $mapfilter and $iprange or $ipaddress ##### $csvpath = "C:\MAP\MAP.csv" # path to the Map Additional Printers CSV file, e. g. "C:\temp\MAP.csv" $targetserver = "tpms003" # central print server's address, e. g. "CPS003" or "192.168.130.1" $agentfqdn = "tpms003.ourdomain.local" # FQDN of the machine the Tpms.Agent is running on, e. g. "CPS003.ourdomain.local" $mapfilter = 3 # filter rules: # 0 = * is set to columns User/Group, IP Range and Client Name # 1 = client's IP range is set to column IP Range (specified using $iprange) # 2 = client's IP address is set to column IP Range (specified using $ipaddress) # 3 = client's hostname is set to column Client Name (specified using $clientname) $iprange = "192.168.149.0/24" # IP range entry in the IP Range column, e. g. "192.168.130.0/24", will be used in MAP if $mapfilter = 1 $ipaddress = "192.168.149.17" # single IP address entry in the IP Range column, e. g. "192.168.130.35", will be used in MAP if $mapfilter = 2 $clientname = "client701" # address for retrieving the printer list from ThinPrint Client ... # ... as well as hostname entry in Client Name column, e. g. "LPS025", will be used in MAP if $mapfilter = 3 ##### Reading the printer list from the ThinPrint Client ##### $client = New-TpmsObjTpClient -Name $clientname -Port 4000 # specifies ThinPrint Client's address and TCP port $srva = New-TpmsObjQueryAgent -Name $agentfqdn -Port 5050 -ClientQueries ($client) # specifies Tpms Agent's address and TCP port $clientprinters = Start-TpmsQueryByAgent -Servers ($srva) | Format-TpmsDispatch # retrieves the printer list from ThinPrint Client $clientprinters # displays the client printer list ##### Preparing the Map Additional Printers CSV file ##### If( [system.io.file]::Exists($csvpath) -eq $True) # checks whether the specified CSV file exists { $mapold = Get-Content $csvpath -readcount 0 # reads the current CSV file Set-Content $csvpath -value $mapold # adds a linefeed after "¶" } Else { Add-Content -path $csvpath -value "DefaultPrinter,UserGroup,IPRange,ClientName,Destination" # writes the table head if file didn't exist } ##### Retrieving printer list from ThinPrint Client and supplementing the Map Additional Printers CSV file ##### $clientprinters | foreach { If ($_ -is [ThinPrint.Tpms.Common.TpSrcPrn]) { If ($mapfilter -eq 3) # checks whether $mapfilter is set to 3 { $mapnew = ([string]::Format("True,*,*,{0},\\{1}\{2}", $clientname,$targetserver,$_.Name)) # sets the row structure with client name } If ($mapfilter -eq 2) # checks whether $mapfilter is set to 2 { $mapnew = ([string]::Format("True,*,{0},*,\\{1}\{2}", $ipaddress,$targetserver,$_.Name)) # sets the row structure with IP address } If ($mapfilter -eq 1) # checks whether $mapfilter is set to 1 { $mapnew = ([string]::Format("True,*,{0},*,\\{1}\{2}", $iprange,$targetserver,$_.Name)) # sets the row structure with IP range } If ($mapfilter -eq 0) # checks whether $mapfilter is set to 0 { $mapnew = ([string]::Format("True,*,*,*,\\{0}\{1}", $targetserver,$_.Name)) # sets the row structure with * } Add-Content $csvpath -Value $mapnew # writes the table rows } }