LoadEval LoginStatus Load Sessions Max ServerName -------- ----------- ---- -------- --- ---------- Default AllowLogOns 2100 21 100 XenAppSvr
It accepts pipeline input (from get-xaworkergroupserver for instance) and includes handling for the snap-in to avoid the getting the snap-in scope-locked.
xenModules.psm1
<?ps #Requires -version 2.0 #Requires –PSSnapin Citrix.XenApp.Commands function get-XALoadDetails{ #.Synopsis # Gathers XenApp Load Evaluation Data into a single object #.Description # Gathers XenApp Load Evaluation Data into a single object, useful for determining load balancing behavior. Requires Citrix Xenapp Powershell snapin. #.Parameter Server # Server to pull load Evaluation data from, or enter * or all, to poll the entire farm. #.Parameter HandleSnapin # Loads and unloads the Citrix.XenApp.Commands snapin for the script. Default is false. #.Example # Show Load Balancing Details for server "2K8-Hamster" # Get-XALoadDetails -Server 2K8-Hamster #.Example # Show Load Balancing Details for all XenApp Servers # Get-XALoadDetails -Server All [cmdletbinding()] param( # Target Server, or * to pull all Xen Servers [Parameter(Position=0, Mandatory=$True, ValueFromPipeline=$True)] [string[]]$server, # Handle loading the snapin? Default is no. [Parameter(Position=1, Mandatory=$False)] [Alias("LS")] [switch]$handleSnapin ) BEGIN{ #Handling the Citrix Snapin. If the $handleSnapin is called, CHECK to see if the snapin is loaded before continuing #If the snapin was already loaded, set $handleSnapin to $false if($handleSnapin -eq $true){ if ((Get-PSSnapin -name Citrix.XenApp.Commands -ErrorAction SilentlyContinue) -eq $null){ Add-PSSnapin Citrix.XenApp.Commands }ELSE{ $handleSnapin = $false } } #{Add-PSSnapin citrix*} $allLoads = Get-XAServerLoad #grab load info ONCE }PROCESS{ [string[]]$servers = " " if ($server -eq "*" -or $_ -eq "all") {$servers = Get-XAServer | sort ServerName | select -expand servername} ELSE {$servers = $server} #if (($server -eq "*") -or ($server -eq "all")){$server = Get-XAServer | sort ServerName | select -expand servername} $servers foreach ($server in $servers){ if((Test-Connection -count 1 ($server) -quiet) -eq $true){ "yup" $3in1 = get-xaserver ($server) -full | select ServerName, SessionCount, LogOnMode $allEvals = get-xaloadevaluator -server ($3in1.ServerName) | select ServerUserLoad, LoadEvaluatorName $obj = New-Object PSObject -Property @{ MaxSessions = $allEvals.ServerUserLoad LoadEvaluator = $allEvals.LoadEvaluatorName LoginStatus = $3in1.LogOnMode Load = $allLoads | where{($3in1.ServerName) -eq $server.ServerName} | select -expand Load Sessions = $3in1.SessionCount ServerName = $3in1.Servername } $obj.pstypenames.Insert(0,'xenModule.LoadDetails') $obj } } }END{ #Remove PSSnapin if it wasn't loaded before, to avoid scope locking if($handleSnapin -eq $true){Remove-PSSnapin Citrix.XenApp.Commands } } }##End of get-XALoadDetails Function export-modulemember -function get-XALoadDetailsxenModules.psd1
<?ps #Requires –PSSnapin Citrix.XenApp.Commands # # Module manifest for module 'xenModules' # # Generated by: Jared Shippy # # Generated on: 04/03/2014 # @{ # Script module or binary module file associated with this manifest # RootModule = '' ModuleToProcess = 'xenModules.psm1' # Version number of this module. ModuleVersion = '1.0' # ID used to uniquely identify this module #GUID = 'd0a9150d-b6a4-4b17-a325-e3a24fed0aa9' # Author of this module Author = 'Jared Shippy' # Company or vendor of this module #CompanyName = 'Unknown' # Copyright statement for this module #Copyright = '(c) 2012 User01. All rights reserved.' # Description of the functionality provided by this module # Description = '' # Minimum version of the Windows PowerShell engine required by this module #PowerShellVersion = '2' # Name of the Windows PowerShell host required by this module # PowerShellHostName = '' # Minimum version of the Windows PowerShell host required by this module # PowerShellHostVersion = '' # Minimum version of the .NET Framework required by this module # DotNetFrameworkVersion = '' # Minimum version of the common language runtime (CLR) required by this module # CLRVersion = '' # Processor architecture (None, X86, Amd64) required by this module # ProcessorArchitecture = '' # Modules that must be imported into the global environment prior to importing this module # RequiredModules = @() # Assemblies that must be loaded prior to importing this module # RequiredAssemblies = @() # Script files (.ps1) that are run in the caller's environment prior to importing this module # ScriptsToProcess = @() # Type files (.ps1xml) to be loaded when importing this module # TypesToProcess = @() # Format files (.ps1xml) to be loaded when importing this module FormatsToProcess = @('xenModules.Format.ps1xml') # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess # NestedModules = @() # Functions to export from this module FunctionsToExport = '*' # Cmdlets to export from this module CmdletsToExport = '*' # Variables to export from this module VariablesToExport = '*' # Aliases to export from this module AliasesToExport = '*' # List of all modules packaged with this module # ModuleList = @() # List of all files packaged with this module # FileList = @() # Private data to pass to the module specified in RootModule/ModuleToProcess # PrivateData = '' # HelpInfo URI of this module # HelpInfoURI = '' # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. # DefaultCommandPrefix = '' }
xenModules.Format.ps1xml
<?xmlHashTable XenModule.LoadDetails 8 13 8 8 Right 3 10 LoadEvaluator LoginStatus Load Sessions MaxSessions ServerName
No comments:
Post a Comment