resources/qliknprinting.ps1

function Show-QlikNPrintingServices {

    [CmdletBinding(PositionalBinding=$false)]
    param(        
        [string[]]$ComputerName="localhost"
    )

    $ComputerName | ForEach-Object { `
        Get-Service "*nprinting*" -ComputerName $_ | `
        Select-Object @{Name='ComputerName';Expression={$_.MachineName}}, DisplayName, Status, Starttype | `
        Format-Table * -AutoSize `
    }
}

function Start-QlikNPrinting {

    [CmdletBinding(PositionalBinding=$false)]
    param(   
        [Parameter(Mandatory=$false)]
        [string]$ComputerName="localhost",
        [Parameter(Mandatory=$false)]
        [Switch] $Quiet=$false
    )

    # Get enabeld Qlik NPRinting related Services and start in required order
    # Including Repo service, which must be started first if enabled
    # https://support.qlik.com/articles/000058729

    $NPrintingServices = Get-Service "*nprinting*" -ComputerName $ComputerName | Where-Object { $_.StartType -ne "Disabled" }

    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingRepoService")}      | Start-Service  
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingMessagingService")} | Start-Service  
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingWebEngine")}        | Start-Service  
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingScheduler")}        | Start-Service  
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingEngine")}           | Start-Service  
    $NPrintingServices | Start-Service 

    if(-not $Quiet) {
        Show-QlikNPrintingServices -ComputerName $ComputerName
    }
}


function Stop-QlikNPrinting {

    [CmdletBinding(PositionalBinding=$false)]
    param(        
        [Parameter(Mandatory=$false)]
        [string]$ComputerName="localhost",
        [Parameter(Mandatory=$false)]
        [Switch] $Quiet=$false
    )

    # Get all Qlik Nprinting services, except Repo service
    # Database assumed to always remain running
    $NPrintingServices = Get-Service "*nprinting*" -ComputerName $ComputerName | `
                         Where-Object { $_.Name -notlike "QlikNPrintingRepoService" } 

    # Stop services in proper order
    # https://support.qlik.com/articles/000058729
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingEngine")}           | Stop-Service -Force 
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingScheduler")}        | Stop-Service -Force 
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingWebEngine")}        | Stop-Service -Force 
    $NPrintingServices | Where-Object {($_.Name -eq "QlikNPrintingMessagingService")} | Stop-Service -Force 
    $NPrintingServices | Stop-Service -Force 

    if(-not $Quiet) {
        Show-QlikNPrintingServices -ComputerName $ComputerName
    }
}

function Restart-QlikNPrinting {

    [CmdletBinding(PositionalBinding=$false)]
    param(        
        [Parameter(Mandatory=$false)]
        [string]$ComputerName="localhost"
    )

    Stop-QlikNPrinting -ComputerName $ComputerName -Quiet 
    Start-QlikNPrinting -ComputerName $ComputerName
}