下列 PowerShell 函數會判斷 View 連線伺服器服務是否正在執行,並在該服務未執行時加以啟動。

# WaitForViewStartup
# Parameters
# $ClearError If $true, clear the $error object on completion.
# $StartBroker If $true, start the service if it is not running.

function WaitForViewStartup
{ param ($ClearError = $true, $StartBroker = $true)
    $service = Get-Service wsbroker
    if($service -and (Get-Service wstomcat)){
        $started = $false
        if($service.Status -eq "Stopped"){
            if($StartBroker){ # Start the broker if it is not running.
                Write-Warning "Connection Broker service is stopped, attempting to start."
                $errCountBefore = $error.Count
                Start-Service wsbroker
                $errCountAfter = $error.Count
                if($errorCountAfter -gt $errorCountBefore){
                    break
                }
            } else {
                Write-Error "Connection Broker service is stopped."
                break
            }
        }
        while(!$started){ # Loop until service has completed starting up.
            Write-Warning "Waiting for View Connection Server to start."
            $errCountBefore = $error.Count
            $output = Get-GlobalSetting -ErrorAction SilentlyContinue
            $errCountAfter = $error.Count
            $started = $true
            if($errCountAfter -gt $errCountBefore){
                $err = $error[0].ToString()
                if($err.Contains("NoQueueHandler")){
                    $started = $false
                    Start-Sleep -s 1
                } else {
                    if($ClearError){
                        $error.Clear()
                    }
                    Write-Error $err
                    break
                }
            }
            if($ClearError){
                $error.Clear()
            }
        }
    } else {
        Write-Error "The View Connection Server services could not be found. Is the Connection
            Server installed?"
    }
}