{"id":1931,"date":"2019-05-16T22:14:24","date_gmt":"2019-05-16T14:14:24","guid":{"rendered":"http:\/\/www.jhouseconsulting.com\/?p=1931"},"modified":"2025-08-02T10:50:27","modified_gmt":"2025-08-02T02:50:27","slug":"xdping-powershell-function","status":"publish","type":"post","link":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931","title":{"rendered":"XDPing PowerShell Function"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their\u00a0<a href=\"https:\/\/support.citrix.com\/article\/CTX207624\" target=\"_blank\" rel=\"noopener\">Health Assistant tool<\/a>. I was struggling a little to get the PowerShell code working as expected, so in the end I used\u00a0the <a href=\"https:\/\/www.jetbrains.com\/decompiler\/\" target=\"_blank\" rel=\"noopener\" title=\"\">JetBrains dotPeek .NET decompiler<\/a> to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health Assistant Tool. This allowed me to reverse engineer and understand how Citrix does it in C# .NET, which is then easy for me to convert to PowerShell. Yeah&#8230;okay, so I cheated at little \ud83d\ude09\u00a0I also released a <a href=\"https:\/\/www.jhouseconsulting.com\/2023\/06\/13\/xdping-c-function-2443\" target=\"_blank\" rel=\"noopener\">C# (csharp) function<\/a> I wrote back in 2020.<\/p>\n\n\n\n<p>I used this PowerShell function in two scripts:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.jhouseconsulting.com\/2019\/03\/04\/controlling-the-starting-of-the-citrix-desktop-service-brokeragent-1894\" target=\"_blank\" rel=\"noopener\">Controlling the Starting of the Citrix Desktop Service (BrokerAgent)<\/a><\/li>\n<li><a href=\"https:\/\/www.jhouseconsulting.com\/2025\/06\/21\/the-citrix-virtual-apps-and-desktops-desktops-as-a-service-health-check-script-on-steroids-3181\" target=\"_blank\" rel=\"noopener\">The Citrix Virtual Apps and Desktops &amp; Desktops as a Service Health Check Script on Steroids<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To test if the Broker service is reachable, listening and processing requests on its configured port, you can issue blank HTTP POST requests at the Broker&#8217;s Registrar service, which is located at <strong>\/Citrix\/CdsController\/IRegistrar<\/strong>. If the first line displayed\/returned is &#8220;<strong>HTTP\/1.1 100 Continue<\/strong>&#8220;, then the Broker service responded and is deemed to be healthy.<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nFunction XDPing {\n  # This function performs an XDPing to make sure the Delivery Controller or Cloud Connector is in a healthy state.\n  # It tests whether the Broker service is reachable, listening and processing requests on its configured port.\n  # We do this by issuing a blank HTTP POST requests to the Broker's Registrar service. Including \"Expect: 100-continue\"\n  # in the body will ensure we receive a respose of \"HTTP\/1.1 100 Continue\", which is what we use to verify that it's in\n  # a healthy state.\n  # You will notice that you can also pass proxy parameters to the function. This is for test and development ONLY. I\n  # added this as I was using Fiddler to test the functionality and make sure the raw data sent was correctly formatted.\n  # I decided to leave these parameters in the function so that others can learn and understand how this works.\n  # To work out the best way to write this function I decompiled the VDAAssistant.Backend.dll from the Citrix Health\n  # Assistant tool using JetBrains decompiler.\n  # Written by Jeremy Saunders\n  param(\n    &#x5B;Parameter(Mandatory=$True)]&#x5B;String]$ComputerName, \n    &#x5B;Parameter(Mandatory=$True)]&#x5B;Int32]$Port,\n    &#x5B;String]$ProxyServer=\"\", \n    &#x5B;Int32]$ProxyPort,\n    &#x5B;Switch]$ConsoleOutput\n  )\n  $service = \"http:\/\/${ComputerName}:${Port}\/Citrix\/CdsController\/IRegistrar\"\n  $s = \"POST $service HTTP\/1.1`r`nContent-Type: application\/soap+xml; charset=utf-8`r`nHost: ${ComputerName}:${Port}`r`nContent-Length: 1`r`nExpect: 100-continue`r`nConnection: Close`r`n`r`n\"\n  $log = New-Object System.Text.StringBuilder\n  $log.AppendLine(\"Attempting an XDPing against $ComputerName on TCP port number $port\") | Out-Null\n  $listening = $false\n  If (&#x5B;string]::IsNullOrEmpty($ProxyServer)) {\n    $ConnectToHost = $ComputerName\n    &#x5B;int]$ConnectOnPort = $Port\n  } Else {\n    $ConnectToHost = $ProxyServer\n    &#x5B;int]$ConnectOnPort = $ProxyPort\n    $log.AppendLine(\"- Connecting via a proxy: ${ProxyServer}:${ProxyPort}\") | Out-Null\n  }\n  try {\n    $socket = New-Object System.Net.Sockets.Socket (&#x5B;System.Net.Sockets.AddressFamily]::InterNetwork, &#x5B;System.Net.Sockets.SocketType]::Stream, &#x5B;System.Net.Sockets.ProtocolType]::Tcp)\n    try {\n      $socket.Connect($ConnectToHost,$ConnectOnPort)\n      if ($socket.Connected) {\n        $log.AppendLine(\"- Socket connected\") | Out-Null\n        $bytes = &#x5B;System.Text.Encoding]::ASCII.GetBytes($s)\n        $socket.Send($bytes) | Out-Null\n        $log.AppendLine(\"- Sent the data\") | Out-Null\n        $numArray = New-Object byte&#x5B;] 21\n        $socket.ReceiveTimeout = 5000\n        $socket.Receive($numArray) | Out-Null\n        $log.AppendLine(\"- Received the following 21 byte array: \" + &#x5B;BitConverter]::ToString($numArray)) | Out-Null\n        $strASCII = &#x5B;System.Text.Encoding]::ASCII.GetString($numArray)\n        $strUTF8 = &#x5B;System.Text.Encoding]::UTF8.GetString($numArray)\n        $log.AppendLine(\"- Converting to ASCII: `\"$strASCII`\"\") | Out-Null\n        $log.AppendLine(\"- Converting to UTF8: `\"$strUTF8`\"\") | Out-Null\n        $socket.Send(&#x5B;byte&#x5B;]](32)) | Out-Null\n        $log.AppendLine(\"- Sent a single byte with the value 32 (which represents the ASCII space character) to the connected socket.\") | Out-Null\n        $log.AppendLine(\"- This is done to gracefully signal the end of the communication.\") | Out-Null\n        $log.AppendLine(\"- This ensures it does not block\/consume unnecessary requests needed by VDAs.\") | Out-Null\n        if ($strASCII.Trim().StartsWith(\"HTTP\/1.1 100 Continue\", &#x5B;System.StringComparison]::CurrentCultureIgnoreCase)) {\n          $listening = $true\n          $log.AppendLine(\"- The service is listening and healthy\") | Out-Null\n        } else {\n          $log.AppendLine(\"- The service is not listening\") | Out-Null\n        }\n        try {\n          $socket.Close()\n          $log.AppendLine(\"- Socket closed\") | Out-Null\n        } catch {\n          $log.AppendLine(\"- Failed to close socket\") | Out-Null\n          $log.AppendLine(\"- ERROR: $_\") | Out-Null\n        }\n        $socket.Dispose()\n      } else {\n        $log.AppendLine(\"- Socket failed to connect\") | Out-Null\n      }\n    } catch {\n      $log.AppendLine(\"- Failed to connect to service\") | Out-Null\n      $log.AppendLine(\"- ERROR: $_\") | Out-Null\n    }\n  } catch {\n    $log.AppendLine(\"- Failed to create socket\") | Out-Null\n    $log.AppendLine(\"- ERROR: $_\") | Out-Null\n  }\n  If ($ConsoleOutput) {\n    Write-Host $log.ToString().TrimEnd()\n  }\n  return $listening\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Then you can call the function from within your script. Just give it the FQDN of a Delivery Controller or Cloud Connector and the port it&#8217;s listening on, which is 80 by default. You will either receive a return value of True or False from the function.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\n$ComputerName = \"cxdt01.jhouseconsulting.com\"\n$Port = 80\n\nXDPing -ComputerName $ComputerName -Port $Port\n<\/pre><\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/www.jhouseconsulting.com\/xdpingoutput\"><img fetchpriority=\"high\" decoding=\"async\" width=\"487\" height=\"107\" src=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2019\/05\/XDPingOutput.png\" alt=\"XDPing Output\" class=\"wp-image-1943\" srcset=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2019\/05\/XDPingOutput.png 487w, https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2019\/05\/XDPingOutput-300x66.png 300w\" sizes=\"(max-width: 487px) 100vw, 487px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Enjoy!<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their\u00a0Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used\u00a0the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health &#8230; <a title=\"XDPing PowerShell Function\" class=\"read-more\" href=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\" aria-label=\"Read more about XDPing PowerShell Function\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[14,626,659,5,91,38,242],"tags":[544,657,416,862,861,545,882,340,656,543],"class_list":["post-1931","post","type-post","status-publish","format-standard","hentry","category-citrix","category-cvad","category-powershell","category-scripting","category-vdi","category-xenapp","category-xendesktop","tag-citrixcdscontrolleriregistrar","tag-broker-registrar-service","tag-citrix","tag-cloud-connector","tag-delivery-controller","tag-http1-1-100-continue","tag-iregistrar","tag-powershell","tag-registrar-service","tag-xdping"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Jeremy Saunders\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846 - Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846\" \/>\n\t\t<meta property=\"og:description\" content=\"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-05-16T14:14:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-08-02T02:50:27+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#blogposting\",\"name\":\"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846\",\"headline\":\"XDPing PowerShell Function\",\"author\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/author\\\/jeremy#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/XDPingOutput.png\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931\\\/#articleImage\",\"width\":487,\"height\":107,\"caption\":\"XDPing Output\"},\"datePublished\":\"2019-05-16T22:14:24+08:00\",\"dateModified\":\"2025-08-02T10:50:27+08:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#webpage\"},\"articleSection\":\"Citrix, CVAD, PowerShell, Scripting, VDI, XenApp, XenDesktop, \\\/Citrix\\\/CdsController\\\/IRegistrar, Broker Registrar service, Citrix, Cloud Connector, Delivery Controller, HTTP\\\/1.1 100 Continue, IRegistrar, PowerShell, Registrar service, XDPing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/category\\\/scripting#listItem\",\"name\":\"Scripting\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/category\\\/scripting#listItem\",\"position\":2,\"name\":\"Scripting\",\"item\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/category\\\/scripting\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#listItem\",\"name\":\"XDPing PowerShell Function\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#listItem\",\"position\":3,\"name\":\"XDPing PowerShell Function\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/category\\\/scripting#listItem\",\"name\":\"Scripting\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/#organization\",\"name\":\"J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846\",\"description\":\"Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Blog-Banner-White-JeremySaunders-1.png\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931\\\/#organizationLogo\",\"width\":1020,\"height\":200},\"image\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/author\\\/jeremy#author\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/author\\\/jeremy\",\"name\":\"Jeremy Saunders\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f2d27bd3d985e6ef2024dded7c713b14440d467a6a0100aede3cfefcb4ab20f1?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Jeremy Saunders\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#webpage\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931\",\"name\":\"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846\",\"description\":\"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/2019\\\/05\\\/16\\\/xdping-powershell-function-1931#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/author\\\/jeremy#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/author\\\/jeremy#author\"},\"datePublished\":\"2019-05-16T22:14:24+08:00\",\"dateModified\":\"2025-08-02T10:50:27+08:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/#website\",\"url\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/\",\"name\":\"J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846\",\"description\":\"Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.jhouseconsulting.com\\\/jhouseconsulting\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846","description":"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health","canonical_url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#blogposting","name":"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846","headline":"XDPing PowerShell Function","author":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/author\/jeremy#author"},"publisher":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2019\/05\/XDPingOutput.png","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\/#articleImage","width":487,"height":107,"caption":"XDPing Output"},"datePublished":"2019-05-16T22:14:24+08:00","dateModified":"2025-08-02T10:50:27+08:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#webpage"},"isPartOf":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#webpage"},"articleSection":"Citrix, CVAD, PowerShell, Scripting, VDI, XenApp, XenDesktop, \/Citrix\/CdsController\/IRegistrar, Broker Registrar service, Citrix, Cloud Connector, Delivery Controller, HTTP\/1.1 100 Continue, IRegistrar, PowerShell, Registrar service, XDPing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting#listItem","position":1,"name":"Home","item":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting","nextItem":{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting#listItem","name":"Scripting"}},{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting#listItem","position":2,"name":"Scripting","item":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting","nextItem":{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#listItem","name":"XDPing PowerShell Function"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#listItem","position":3,"name":"XDPing PowerShell Function","previousItem":{"@type":"ListItem","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting#listItem","name":"Scripting"}}]},{"@type":"Organization","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/#organization","name":"J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846","description":"Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/","logo":{"@type":"ImageObject","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\/#organizationLogo","width":1020,"height":200},"image":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/author\/jeremy#author","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/author\/jeremy","name":"Jeremy Saunders","image":{"@type":"ImageObject","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/f2d27bd3d985e6ef2024dded7c713b14440d467a6a0100aede3cfefcb4ab20f1?s=96&d=mm&r=g","width":96,"height":96,"caption":"Jeremy Saunders"}},{"@type":"WebPage","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#webpage","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931","name":"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846","description":"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/#website"},"breadcrumb":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931#breadcrumblist"},"author":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/author\/jeremy#author"},"creator":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/author\/jeremy#author"},"datePublished":"2019-05-16T22:14:24+08:00","dateModified":"2025-08-02T10:50:27+08:00"},{"@type":"WebSite","@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/#website","url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/","name":"J House Consulting - DevOps, Microsoft, Citrix & Desktop Virtualisation (VDI) Specialist - +61 413 441 846","description":"Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/#organization"}}]},"og:locale":"en_US","og:site_name":"J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846 - Delivering customer success through technology: IT Infrastructure | Citrix | End User Computing | Platform Engineering | DevOps | Full Stack Developer | Technical Architect | Improvisor | Aspiring Comedian | Midlife Adventurer","og:type":"article","og:title":"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846","og:description":"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health","og:url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931","og:image":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png","og:image:secure_url":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png","article:published_time":"2019-05-16T14:14:24+00:00","article:modified_time":"2025-08-02T02:50:27+00:00","twitter:card":"summary_large_image","twitter:title":"XDPing PowerShell Function - J House Consulting - DevOps, Microsoft, Citrix &amp; Desktop Virtualisation (VDI) Specialist - +61 413 441 846","twitter:description":"I wanted to write valid PowerShell function to do an XDPing the same way Citrix do with their Health Assistant tool. I was struggling a little to get the PowerShell code working as expected, so in the end I used the JetBrains dotPeek .NET decompiler to decompile the VDAAssistant.Backend.dll, which is a component of the Citrix Health","twitter:image":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-content\/uploads\/2025\/06\/Blog-Banner-White-JeremySaunders-1.png"},"aioseo_meta_data":{"post_id":"1931","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2025-07-04 13:44:26","updated":"2025-08-02 03:00:05","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting\" title=\"Scripting\">Scripting<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tXDPing PowerShell Function\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting"},{"label":"Scripting","link":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/category\/scripting"},{"label":"XDPing PowerShell Function","link":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/2019\/05\/16\/xdping-powershell-function-1931"}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/posts\/1931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/comments?post=1931"}],"version-history":[{"count":5,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/posts\/1931\/revisions"}],"predecessor-version":[{"id":3445,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/posts\/1931\/revisions\/3445"}],"wp:attachment":[{"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/media?parent=1931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/categories?post=1931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jhouseconsulting.com\/jhouseconsulting\/wp-json\/wp\/v2\/tags?post=1931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}