#XenApp_InfoFarm
#CTXBLOG.fr
#Version : 1.1
#21/01/2011
# -Delete Get-Content ($Path + $FileName)) | Foreach-Object {$_ -replace "False", "False"} | Set-Content ($Path + $FileName)
# Replace by $XenAppReport = $XenAppReport.Replace("False", "False")
# - Adding column Load Evaluator in "Server(s) Details" Report
#Version : 1.2
#21/01/2011
# -Correction error code line 125 - {$OutputEnteteServ += @($Adm) by {$OutputEnteteServ += @($Servers)
Set-executionpolicy RemoteSigned
If ((Get-PSSnapin -Name "Citrix*" -ErrorAction SilentlyContinue | Measure-Object).count -eq 0) {
Add-PSSnapin -Name "Citrix*"}
#File functions
. "C:\tools\scripts\powershell\XenApp_Check\Ctx_Functions.ps1"
#Display progess bar 0 %
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 0 -Status "Informations recovery" -Id 1
#Gets the farm information
$farm = Get-XAFarmConfiguration
#Create html report
$Path="c:\tools\"
$FileName="XenApp_InfoFarm-" + $farm + ".html"
$File = [System.IO.File]::CreateText($Path + $FileName)
$Date = Get-Date
$Version = "1.1"
#Display progess bar 3 %
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 5 -Status "Informations recovery" -Id 1
#Variables XenApp
$Zones = GET-XAZone | sort ZoneName
$Zones_Count = (($Zones | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 10 -Status "Informations Zone(s)recovery" -Id 1 #Display progess bar 5 %
$LoadEvaluator = GET-XALoadEvaluator | sort LoadEvaluatorName
$LoadEvalutaror_Count = (($LoadEvaluator | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 15 -Status "Informations Load Evaluator(s) recovery" -Id 1 #Display progess bar 10 %
$Policy = GET-XAPolicy | sort Priority
$Policy_Count = (($Policy | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 20 -Status "Informations Policy(s) recovery" -Id 1 #Display progess bar 15 %
$Adm = Get-XAAdministrator
$Adm_Count = (($Adm | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 25 -Status "Informations Administrator(s) recovery" -Id 1 #Display progess bar 20 %
$Applications = Get-XAApplication |sort FolderPath
$Applications_Count = (($Applications | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 55 -Status "Informations Application(s) recovery" -Id 1 #Display progess bar 55 %
$Servers = Get-XAServer | sort FolderPath
$Servers_Count = (($Servers | Measure-Object).Count)
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 95 -Status "Informations Server(s) recovery" -Id 1 #Display progess bar 90 %
$XenAppReport = Get-CustomHTML "Farme Name : $Farm"
$XenAppReport += Get-CustomHeaderClose
$DsnPath = Get-Content "C:\Program Files\Citrix\Independent Management Architecture\mf20.dsn"
foreach ($str in $DsnPath) {$1=$str.contains("DRIVER") ; $2=$str.contains("SERVER") ; if($1 -eq $True) {$DataStoreFile = $Str} ElseIF ($2 -eq $True) {$DataStoreServer = $Str} }
# ---- General Summary Info ----
#Write-CustomOut "..Adding General Summary Info to the XenApp report"
$CommentsSet = $Comments
$Comments = $False
$XenAppReport += Get-CustomHeader "General Details" ""
$XenAppReport += Get-HTMLDetail "Datastore type" (@($DataStoreFile.Substring(7)))
$XenAppReport += Get-HTMLDetail "Datastore Server" (@($DataStoreServer.Substring(7)))
$XenAppReport += Get-HTMLDetail "Licence Server Name and port" (@($Farm.LicenseServerName + " ("+$Farm.LicenseServerPortNumber+")"))
$XenAppReport += Get-HTMLDetail "Number of Servers:" (@($Servers_Count))
$XenAppReport += Get-HTMLDetail "Number of Applications:" (@($Applications_Count))
$XenAppReport += Get-HTMLDetail "Number of Zones:" (@($Zones_Count))
$XenAppReport += Get-HTMLDetail "Number of Load Evaluators:" (@($LoadEvalutaror_Count))
$XenAppReport += Get-HTMLDetail "Number of Policy:" (@($Policy_Count))
$XenAppReport += Get-HTMLDetail "Number of Administrators:" (@($Adm_Count))
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Zones Details Info to the XenApp report"
Foreach ($Zones in $Zones) {$OutputEnteteZone += @($Zones | Select @{N="Zone Name";E={if($Zones.ZoneName -eq $Null){"Error"}else{$Zones.ZoneName}}}, @{N="Zone Data Collector";E={if($Zones.DataCollector -eq $Null){"Error"}else{$Zones.DataCollector}}}) }
$XenAppReport += Get-CustomHeader ("Zone(s) Details
Total : "+($Zones_Count))
$XenAppReport += Get-HTMLTable $OutputEnteteZone
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Load Evaluator Details Info to the XenApp report"
Foreach ($LoadEvaluator in $LoadEvaluator) {$OutputEnteteLoad += @($LoadEvaluator | Select @{N="Load Evaluator Name";E={if($LoadEvaluator.LoadEvaluatorName -eq $Null){"Error"}else{$LoadEvaluator.LoadEvaluatorName}}}, @{N="Description";E={if($LoadEvaluator.Description -eq $Null){"No description"}else{$LoadEvaluator.Description}}}) }
$XenAppReport += Get-CustomHeader ("Load Evaluator(s) Details
Total : "+($LoadEvalutaror_Count))
$XenAppReport += Get-HTMLTable $OutputEnteteLoad
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Policy Details Info to the XenApp report"
Foreach ($Policy in $Policy) {$OutputEntetePolicy += @($Policy | Select @{N="Policy Name";E={if($Policy.Policyname -eq $Null){"Error"}else{$Policy.PolicyName}}}, @{N="Description";E={$Policy.Description}}, @{N="Priority";E={$Policy.Priority}}, @{N="Enabled";E={if($Policy.Enabled -eq $False){"False"}else{$Policy.Enabled}}} )}
$XenAppReport += Get-CustomHeader ("Policy(s) Details
Total : "+($Policy_Count))
#$OutputEntetePolicy | Set-Content c:\process-report.txt
$XenAppReport += Get-HTMLTable $OutputEntetePolicy
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Administrator Details Info to the XenApp report"
Foreach ($Adm in $Adm) {$OutputEnteteAdm += @($Adm | Select @{N="Administrator Name";E={if($Adm.AdministratorName -eq $Null){"Error"}else{$Adm.AdministratorName}}}, @{N="Permissions";E={$Adm.AdministratorType}}, @{N="Enabled";E={if($Adm.Enabled -match "False"){"False"}else{$Adm.Enabled}}}) }
$XenAppReport += Get-CustomHeader ("Administrator(s) Details
Total : "+($Adm_Count))
$XenAppReport += Get-HTMLTable $OutputEnteteAdm
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Applications Details Info to the XenApp report"
Foreach ($Applications in $Applications) {$OutputEnteteApp += @($Applications | Select @{N="Application Name";E={if($Applications.DisplayName -eq $Null){"Error"}else{$Applications.DisplayName}}}, @{N="Description";E={$Applications.Description}}, @{N="Folder";E={$Applications.FolderPath}},@{N="Enabled";E={if($Applications.Enabled -match "False"){"False"}else{$Applications.Enabled}}}) }
$XenAppReport += Get-CustomHeader ("Application(s) Details
Total : "+($Applications_Count))
$XenAppReport += Get-HTMLTable $OutputEnteteApp
$XenAppReport += Get-CustomHeaderClose
#Write-CustomOut "..Adding Servers Details Info to the XenApp report"
Foreach ($Servers in $Servers) {$OutputEnteteServ += @($Servers | Select @{N="Servers Name";E={if($Servers.ServerName -eq $Null){"Error"}else{$Servers.ServerName}}}, @{N="IP";E={$Servers.IpAddresses}}, @{N="Folder";E={$Servers.FolderPath}}, @{N="Zone";E={$Servers.ZoneName}}, @{N="Logon Enabled";E={if($Servers.LogOnsEnabled -match "False"){"False"}else{$Servers.LogOnsEnabled}}}, @{N="Load Evaluator";E={Get-XALoadEvaluator -ServerName $Servers}}, @{N="XenApp Edition";E={$Servers.CitrixEditionString}}, @{N="Instal Date XenApp";E={$Servers.CitrixInstallDate}}) }
$XenAppReport += Get-CustomHeader ("Server(s) Details
Total : "+($Servers_Count))
$XenAppReport += Get-HTMLTable $OutputEnteteServ
$XenAppReport += Get-CustomHeaderClose
$XenAppReport | out-file -encoding ASCII -filepath $file
#Display progess bar 100 %
Write-Progress -Activity "XenApp_InforFarm in Progress" -PercentComplete 100 -Status "Informations recovery" -Id 1
# ---- Time to build ----
$XenAppReport += Get-CustomHeader "Time to build"
$executiontime = (get-date) - $date
$XenAppReport += Get-HTMLDetail "Time in minutes:" (@([math]::round($executiontime.TotalMinutes,2)))
$XenAppReport += Get-CustomHeaderClose
$XenAppReport += Get-CustomHeader0Close
$XenAppReport += Get-CustomHTMLClose
$XenAppReport = $XenAppReport.Replace("False", "False")
$File.WriteLine($XenAppReport)
$File.close()