Author Posts

September 2, 2016 at 1:56 pm

I am trying to return certain column of an array

My array looks like this(with all these number of spaces in between):
Soft One server01 1156
Soft One server04 1172
Soft One server03 1137
Soft One server02 1184

I only need to read the value of last column(that is the number) and supply it for other commands.

$xaload = qfarm /load /continue /app "Soft One" 
for ($i = 4; $i -lt $xaload.Length; $i++)
{ 
   $line =  ([string]$xaload[$i]).Split(',')[0];
   $line.split()[0] #what number I should give in the square braces to get the last column value only?
#when I select 0 it returns the first word of each line which is "soft"
#when I select 1 it returns the second word which is"one"
}

Thanks in advance for attending.

September 2, 2016 at 2:06 pm

You can count backwards from the end with negatives, so -1

September 2, 2016 at 2:15 pm

If you always want the last item, then you typically use upperbound to get highest part of the array. In this case, you have 4 items in the array, so you could also use a static index value like $arrRow[3].

$array = @(
"Soft One server01 1156",
"Soft One server04 1172",
"Soft One server03 1137",
"Soft One server02 1184"
)

$results = foreach ($row in $array) {
    $arrRow = $row -Split " "
    $arrRow[$arrRow.Count -1]
    #or
    $arrRow[$arrRow.Length -1]
    #or
    $arrRow[$arrRow.getupperbound(0)]
}

$results

September 2, 2016 at 3:15 pm

Have you looked at using the Citrix XenApp PowerShell SDK and its cmdlets to get the details as proper PowerShell objects instead of doing prayer based text parsing of the qfarm command line tool output?

https://www.citrix.com/downloads/xenapp/sdks/powershell-sdk.html

http://powerschill.com/citrix/using-powershell-to-get-xenapp-server-load/
https://www.citrix.com/blogs/2010/08/17/getting-a-farm-inventory-with-xenapp-6-powershell-scripting/

Citrix Xenapp 6.5 Powershell Guide

September 2, 2016 at 3:15 pm

Thanks Craig. Thanks Rob. That was really helpful.