Company wants to deploy Dymo LabelWriter 550 Turbo on a location. and wants to push the software to all systems on that location.

We have automated software updates in Intune, but Dymo Connect automatic checks for new version. Even is user is not local admin. This was my first problem.

Second issue to make it beautiful Remediation was not active.

So First, make Dymo Connect available to the system (Not push)

and 2nd I made a script and detection script for an win32 app installer.
In this script I put the local firewall to block dymo.

Here is the Dymo Install Script.

###########################################################
#### Script Created by Daag van der Meer            #######
#### To rollout Dymo Label Printer                  #######
###########################################################

Param(
    [switch]$Install,
    [switch]$Uninstall
)

$PrinterIP   = "<LOCALIP>"
$PrinterName = "<PrinterName>"
$PortName    = "Port+$PrinterName"

$DriverName  = "DYMO LabelWriter 550 Turbo"

$FirewallRuleWebAPI = "Block DYMO WebAPI"
$FirewallRuleUpdate = "Block DYMO Update"

$WebAPIExe = "C:\Program Files (x86)\DYMO\DYMO Connect\dymo.webapi.win.host.exe"
$UpdateExe = "C:\Program Files (x86)\DYMO\DYMO Connect\DYMOconnect.exe"

# Logging
$LogFolder = "C:\ProgramData\Intune\<Company>"
$LogFile   = Join-Path $LogFolder "$PrinterName.log"

New-Item -Path $LogFolder -ItemType Directory -Force | Out-Null

try {
    Start-Transcript -Path $LogFile -Force | Out-Null
}
catch {
}

###########################################################
# INSTALL
###########################################################
if ($Install) {

    Write-Output "===== INSTALL START $PrinterName ====="
    Write-Output "Datum: $(Get-Date)"
    Write-Output "Printer IP  : $PrinterIP"
    Write-Output "Printer Name: $PrinterName"

    # Printer Port
    if (-not (Get-PrinterPort -Name $PortName -ErrorAction SilentlyContinue)) {

        Write-Output "Creating printer port $PortName"

        Add-PrinterPort `
            -Name $PortName `
            -PrinterHostAddress $PrinterIP
    }
    else {
        Write-Output "Printer port already exists"
    }

    # Driver
    if (-not (Get-PrinterDriver -Name $DriverName -ErrorAction SilentlyContinue)) {

        Write-Output "Installing printer driver"

        Add-PrinterDriver -Name $DriverName

        Start-Sleep -Seconds 5
    }
    else {
        Write-Output "Printer driver already exists"
    }

    # Printer
    if (-not (Get-Printer -Name $PrinterName -ErrorAction SilentlyContinue)) {

        Write-Output "Creating printer"

        Add-Printer `
            -Name $PrinterName `
            -DriverName $DriverName `
            -PortName $PortName
    }
    else {
        Write-Output "Printer already exists"
    }

    # Firewall WebAPI
    if (-not (Get-NetFirewallRule -DisplayName $FirewallRuleWebAPI -ErrorAction SilentlyContinue)) {

        Write-Output "Creating firewall rule: $FirewallRuleWebAPI"

        New-NetFirewallRule `
            -DisplayName $FirewallRuleWebAPI `
            -Direction Outbound `
            -Program $WebAPIExe `
            -Action Block
    }
    else {
        Write-Output "Firewall rule already exists: $FirewallRuleWebAPI"
    }

    # Firewall Update
    if (-not (Get-NetFirewallRule -DisplayName $FirewallRuleUpdate -ErrorAction SilentlyContinue)) {

        Write-Output "Creating firewall rule: $FirewallRuleUpdate"

        New-NetFirewallRule `
            -DisplayName $FirewallRuleUpdate `
            -Direction Outbound `
            -Program $UpdateExe `
            -Action Block
    }
    else {
        Write-Output "Firewall rule already exists: $FirewallRuleUpdate"
    }

    Write-Output "Installation completed"

    try {
        Stop-Transcript | Out-Null
    }
    catch {
    }

    exit 0
}

###########################################################
# UNINSTALL
###########################################################
if ($Uninstall) {

    Write-Output "===== UNINSTALL START $PrinterName ====="
    Write-Output "Datum: $(Get-Date)"

    # Printer
    if (Get-Printer -Name $PrinterName -ErrorAction SilentlyContinue) {

        Write-Output "Removing printer"

        Remove-Printer -Name $PrinterName
    }

    # Port
    if (Get-PrinterPort -Name $PortName -ErrorAction SilentlyContinue) {

        Write-Output "Removing printer port"

        Remove-PrinterPort -Name $PortName
    }

    # Firewall rules
    if (Get-NetFirewallRule -DisplayName $FirewallRuleWebAPI -ErrorAction SilentlyContinue) {

        Write-Output "Removing firewall rule: $FirewallRuleWebAPI"

        Remove-NetFirewallRule -DisplayName $FirewallRuleWebAPI
    }

    if (Get-NetFirewallRule -DisplayName $FirewallRuleUpdate -ErrorAction SilentlyContinue) {

        Write-Output "Removing firewall rule: $FirewallRuleUpdate"

        Remove-NetFirewallRule -DisplayName $FirewallRuleUpdate
    }

    Write-Output "Uninstall completed"

    try {
        Stop-Transcript | Out-Null
    }
    catch {
    }

    exit 0
}

Here is the Detection Script.

$Printer  = Get-Printer -Name "" -ErrorAction SilentlyContinue
$Port     = Get-PrinterPort -Name "Port<PRINTERNAME>" -ErrorAction SilentlyContinue
$WebAPI   = Get-NetFirewallRule -DisplayName "Block DYMO WebAPI" -ErrorAction SilentlyContinue
$Update   = Get-NetFirewallRule -DisplayName "Block DYMO Update" -ErrorAction SilentlyContinue

if ($Printer -and $Port -and $WebAPI -and $Update)
{
    Write-Output "<PRINTERNAME>detected"
    exit 0
}

Write-Output "PRINTERNAME not detected"
exit 1


Here is also AI generated Image That I made for in company portal

Happy Testing and using it.

Leave a Reply

Your email address will not be published. Required fields are marked *