• Citrix Provisioning Services Assessment Script Update Version 1.10

    September 8, 2016

    PowerShell, PVS

    Back in July, I was helping a customer of my new employer, Choice Solutions, with some issues with their Provisioning Services (PVS) implementation. In order to resolve their issues, we had to implement several registry changes on their PVS servers. They had multiple PVS farms in multiple locations spread across the United States. I actually started to think about the next consultant who would have to come in and do any future work in this environment. I also thought about what if I had to come into a similar environment. How would any consultant know what registry keys had been added or changed? Would the same keys exist across all the PVS servers? Would they all have the same settings? Citrix Insight Services is absolutely no help for finding PVS issues or discrepancies (in my opinion). I decided to update the PVS Assessment script to help in this situation.

    First I would like to thank Choice Solutions for allowing me to spend some company time in getting this script updated and out to the community. Second, I would like to thank a very dedicated tester, Andrew Williamson @ Fujitsu Services, for helping with this update.

    One of my original desires for this script was to make it work for PVS versions 5.x to 7.x and with PowerShell versions 2.0 through 5.x. Andrew put in a LOT of time and effort helping me resolve all the issues with getting the script to work across all PVS and PowerShell versions.

    #Version 1.10 8-Sep-2016

    • Added Appendix K for 33 Misc Registry Keys
      • Miscellaneous Registry Items That May or May Not Exist on Servers
      • These items may or may not be needed
      • This Appendix is strictly for server comparison only
    • Added Break statements to most of the Switch statements
    • Added checking the NIC’s “Allow the computer to turn off this device to save power” setting
    • Added function Get-RegKeyToObject contributed by Andrew Williamson @ Fujitsu Services
    • Added testing for $Null –eq $DiskLocators. PoSH V2 did not like that I forgot to do that
    • Added to the console and report, lines when nothing was found for various items being checked
    • Cleaned up duplicate IP addresses appearing in Appendix J
      • Changed NICIPAddressess from array to hashtable
      • Reset the StreamingIPAddresses array between servers
    • Moved the initialization of arrays to the top of the script instead of inside a function
    • PoSH V2 did not like the “4>$Null”. I test for V2 now and use “2>$Null”
    • Script now works properly with PoSH V2 and PVS 5.x.x
    • Since PoSH V2 does not work with the way I forced Verbose on, I changed all the Write-Verbose statements to Write-Host
      • You should not be able to tell any difference
    • With the help and patience of Andrew Williamson and MBS, the script should now work with PVS servers that have multiple NICs

    The 33 registry keys that are now checked:

    Registry Key                                                      Registry Value                 
    =================================================================================================
    HKLM:\SOFTWARE\Citrix\ProvisioningServices                        AutoUpdateUserCache            
    HKLM:\SOFTWARE\Citrix\ProvisioningServices                        LoggingLevel 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices                        SkipBootMenu                   
    HKLM:\SOFTWARE\Citrix\ProvisioningServices                        UseManagementIpInCatalog       
    HKLM:\SOFTWARE\Citrix\ProvisioningServices                        UseTemplateBootOrder           
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\IPC                    IPv4Address                    
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\IPC                    PortBase 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\IPC                    PortCount 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\Manager                GeneralInetAddr                
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\MgmtDaemon             IPCTraceFile 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\MgmtDaemon             IPCTraceState 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\MgmtDaemon             PortOffset 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\Notifier               IPCTraceFile 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\Notifier               IPCTraceState 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\Notifier               PortOffset 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\SoapServer             PortOffset 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          IPCTraceFile 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          IPCTraceState 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          PortOffset 
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          SkipBootMenu                   
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          SkipRIMS                       
    HKLM:\SOFTWARE\Citrix\ProvisioningServices\StreamProcess          SkipRIMSforPrivate             
    HKLM:\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters       SocketOpenRetryIntervalMS      
    HKLM:\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters       SocketOpenRetryLimit           
    HKLM:\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters       WcHDNoIntermediateBuffering    
    HKLM:\SYSTEM\CurrentControlSet\services\BNIStack\Parameters       WcRamConfiguration             
    HKLM:\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters       WcWarningIncrement             
    HKLM:\SYSTEM\CurrentControlSet\Services\BNIStack\Parameters       WcWarningPercent               
    HKLM:\SYSTEM\CurrentControlSet\Services\BNNS\Parameters           EnableOffload                  
    HKLM:\SYSTEM\Currentcontrolset\services\BNTFTP\Parameters         InitTimeoutSec           
    HKLM:\SYSTEM\Currentcontrolset\services\BNTFTP\Parameters         MaxBindRetry             
    HKLM:\SYSTEM\Currentcontrolset\services\PVSTSB\Parameters         InitTimeoutSec           
    HKLM:\SYSTEM\Currentcontrolset\services\PVSTSB\Parameters         MaxBindRetry      
    

    If anyone from the Citrix Insight Services team is reading this, my offer is still good. I have been offering to help you make your PVS diagnostics and health check actually work and be useful for a very long time. I cannot believe you are turning down free labor!

    You can always find the most current script by going to https://carlwebster.com/where-to-get-copies-of-the-documentation-scripts/

    Thanks

    Webster

    About Carl Webster

    Webster is a Sr. Solutions Architect for Choice Solutions, LLC and specializes in Citrix, Active Directory and Technical Documentation. Webster has been working with Citrix products for many years starting with Multi-User OS/2 in 1990.

    View all posts by Carl Webster

    5 Responses to “Citrix Provisioning Services Assessment Script Update Version 1.10”

    1. Johan Parlevliet Says:

      Our Database server was set as: NAME,1234 which leads to error Test-Connection : Testing connection to computer ‘NAME,1234’ failed: No such host is known
      Solved by modifying script
      #V1.17 see if the database server names contain an instance name. If so, remove it
      #V1.nn see if the database server names contain an port number. If so, remove it

      If($Script:farm.databaseServerName -like “*,*”)
      {
      $tmpArray = $Script:farm.databaseServerName.Split(“,”)
      $tmp = $tmpArray[0]
      $SQLServerIPAddress = Get-IPAddress $tmp
      }
      Else
      {
      old script block
      }

      Reply

    2. Dennis Smith Says:

      Great work Carl,

      Once again, thanks a lot!

      Reply

    3. Bill Rogge Says:

      Only real issue encountered was registering the dll. Kept getting an “Invalid directory on URL..” error. Wound up following the info in “http://discussions.citrix.com/topic/274911-cannot-register-mclipssnapindll/” to change to the directory with the .dll file and then executing the fully pathed installutil command with just the dll file name.

      Reply

    4. Paul M Says:

      Hey Carl,

      Great work as usual. I certainly hope someone from Citrix is reading this because they are definitely missing out!

      Reply

    Leave a Reply