One of the second biggest pain for me as a
farm administrator has always been to figure out if the XenApp Servers in the
farm do have the latest rollup (or hotfix installed. And which are the servers
where the latest roll up is not installed. The biggest pain of course is to
install it remotely on all the XenApp servers ( I am still working in that
one).
So I have this script that creates a report
for a particular rollup pack or hotfix telling which servers have the hotfix
installed and which don’t. It also creates a list of servers where the hotfix
is not installed so I can install the hotfix on those servers.
I have tested this script on XenApp 6.0 farm.
I ran the script from a XenApp server in the farm.
# Script to create a report on
whether the hotfix is installed or not on the
# XenApp servers
# Created by: Ruby Nahal
# Register Addins if missing
$snapin = Get-PSSnapin | where {$_.name -eq 'Citrix.Common.Commands'}
if($snapin -eq $null){ Add-PSSnapin Citrix.Common.Commands }
$snapin = Get-PSSnapin | where {$_.name -eq 'Citrix.XenApp.Commands'}
if($snapin -eq $null){ Add-PSSnapin Citrix.XenApp.Commands }
$farm =
Get-XAfarm #get
farm info
$servers =
Get-XAServer # get
all the xenapp servers in the farm
[string]$CXAName # string object to store the
Xenapp server name
$logfile = "C:\Support\XAreport.txt" # log file to store CXA name
and if the hotfix is installed or not
$CXAList = "C:\Support\CXAlist.txt" #list of
servers that do not have the hotfix installed
Foreach($CXA in $servers) #run for each CXA or Xenapp
server in the farm
{
[Boolean]$RUisInstalled = $false #boolean variable to check the
status of hotfix on the server
$CXAName = $CXA.Servername #Get the
server name for the CXA in the current loop
Write-Output $CXAName # write
the cxa name
#function
XenappHotfixRU2Report([string]$HotfixName) #can
also use this script as a function for multiple hotfixes
# {
# Get current computername and
XenServer object
[String]$HotfixName = 'XA600W2K8R2X64R02' #hotfix in question - will be
commented out if used as the function
foreach($hotfix in
(Get-XAServerHotFix -ServerName $CXAName)) #run for
each hotfix installed on the server
{
if($hotfix.HotfixName
-eq $HotfixName) #if
hotfix name is equal to the $hotfixname set the boolean variable to true
{
$RUisInstalled = $true
}
else
{
echo ".." # else,
basically do nothing
}
}
echo "'n******
$CXAName *******" | Out-File $logfile -Append -Width 240 # write
the CXA name to the log file
if ($RUisInstalled) # tell us if hotfix is
installed or not by writing it to the log file
{
echo "Rollup
Installed" | Out-File $logfile -Append -Width 240
}
Else
{
echo "Rollup
was Not Installed" | Out-File $logfile -Append -Width 240
echo $CXAName | Out-File $CXAList -Append -Width 240
}
# }
#XenappHotfixRU2Report 'XA600W2K8R2X64R02'
}
No comments:
Post a Comment