By Andreas Nick on Freitag, 10. Juli 2015
Category: XenApp

Citrix PVS Connection check mit Powershell

Für die Systemüberwachung reicht es machmal nicht, die Serververfügbarkeit zu prüfen. Wir hatten vor kurzem das Problem, dass ein PVS Server aus Netzwertechnischen Gründen verfügbar und voll finktionsfähig war, aber leider dennoch keine Images gestreamt hat. Zur Überwachung mit SCOM ist ein kleiner Powershell Skript entstanden, dass die Verbindungen von einem Citrix PVS Server überpruft. 

Wenn wir 0 Verbindungen haben, ist etwas nicht OK und das Skript liefert "False" zurück. Im Folgenden das genannzte Skript.

Mit dem ersten Skript wird zunächste auf dem PVS Server das SnapIn installiert. Das muss einmalig erfolgen.

    <#
    .SYNOPSIS
	    Install PVS SnapIn
        return $true on a Citrix PVS Server, if PVS 7.1 SnapIn is installed
    .PARAMETER 
        -$InstallMcliSnapIn $false don't install the snapIn
    .EXAMPLE
        -$InstallMcliSnapIn $true
    #>

[cmdletBinding(SupportsShouldProcess=$False)]
param([BOOLEAN] $InstallMcliSnapIn = $true)


function Install-PSSnapin{
   <#
    .SYNOPSIS
        Install the PSSnapin

    .DESCRIPTION
        Install the PSSnapin
        Andraes Nick 2015

    .PARAMETER 

    .EXAMPLE
        $result =  Install-PSSnapin
    #>
  [cmdletBinding(SupportsShouldProcess=$False)]
  param()

  $out = & “C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe” “C:\Program Files\Citrix\Provisioning Services Console\McliPSSnapIn.dll" 

  if(($out -match "The Install phase completed successfully") -and `
     ($out -match "The Commit phase completed successfully") -and `
     ($out -match "The transacted install has completed")){
        Write-Debug "Successful inizialized"
        return $true
   }
   
   Write-Debug "Cannot install PVS-Snapin"
   return $false
}

Das eigentliche Skript Check-PVSDeviceCount.ps1 führt auf einem Citrx PVS Server (Version 7.6) den DeviceCount. Liegt dieser bei "0" oder gibt es bei der Aussführung des Skriptes ein Problem, liefert das Skript "$False" zurück. Liegt der DeviceCount bei größer 0, liefert das Skript "$True" zurück.

    <#
    .SYNOPSIS
        return $true on a Citrix PVS Server, if the server has open connections to clinets

    .DESCRIPTION
        sometimes there can be a network problem. With this script, a monitoring of open connections ist possible (SCOM)
    .PARAMETER 

    .EXAMPLE
        ConvertTo-PvsObject $diskinfo
    #>

try{
   Add-PSSnapin -Name McliPSSnapIn
   [String] $Output = Mcli-get serverinfo
   $matches = ([regex] 'deviceCount:\s+(?<wert>\d+)').Matches($Output) 
   [int] $deviceCount = $matches[0].Groups["wert"].Value
   Write-Debug "deviceCount : $deviceCount"

   if($deviceCount -ge 1){
     return $true
   } else {
      return $false
   }
}
catch {
  $ErrorMessage = $_.Exception.Message
  $FailedItem = $_.Exception.ItemName
  Write-Host  "$FailedItem $ErrorMessage"
  Write-Debug  "$FailedItem $ErrorMessage"
  return $false
}

Related Posts

Leave Comments