I have (yet another) powershell query. I have an array in powershell which i need to use the remove() and split commands on.
Normally you set an array (or variable) and the above methods exist. On the below $csv2 array both methods are missing, i have checked using the get-member cmd.
How can i go about using remove to get rid of lines with nan. Also how do i split the columns into two different variables. at the moment each element of the array displays one line, for each line i need to convert it into two variables, one for each column.
timestamp Utilization
——— ———–
1276505880 2.0763250000e+00
1276505890 1.7487730000e+00
1276505900 1.6906890000e+00
1276505910 1.7972880000e+00
1276505920 1.8141900000e+00
1276505930 nan
1276505940 nan
1276505950 0.0000000000e+00
$SystemStats = (Get-F5.iControl).SystemStatistics
$report = "c:\snmp\data" + $gObj + ".csv"
### Allocate a new Query Object and add the inputs needed
$Query = New-Object -TypeName iControl.SystemStatisticsPerformanceStatisticQuery
$Query.object_name = $i
$Query.start_time = $startTime
$Query.end_time = 0
$Query.interval = $interval
$Query.maximum_rows = 0
### Make method call passing in an array of size one with the specified query
$ReportData = $SystemStats.get_performance_graph_csv_statistics( (,$Query) )
### Allocate a new encoder and turn the byte array into a string
$ASCII = New-Object -TypeName System.Text.ASCIIEncoding
$csvdata = $ASCII.GetString($ReportData[0].statistic_data)
$csv2 = convertFrom-CSV $csvdata
$csv2
There is no
RemoveorSplitmethod on .NET’sArraytype, or added by the PowerShell wrapper around anArrayinstance. This is quite easy to show:PS[64bit] E:\> $a = 1,2,3,4,5 PS[64bit] E:\> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array PS[64bit] E:\> Get-Member -InputObject $a TypeName: System.Object[] Name MemberType Definition ---- ---------- ---------- Count AliasProperty Count = Length Address Method System.Object&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicK... Clone Method System.Object Clone() CopyTo Method System.Void CopyTo(array array, int index), System.Void CopyTo(arra... Equals Method bool Equals(System.Object obj) Get Method System.Object Get(int ) GetEnumerator Method System.Collections.IEnumerator GetEnumerator() GetHashCode Method int GetHashCode() GetLength Method int GetLength(int dimension) GetLongLength Method long GetLongLength(int dimension) GetLowerBound Method int GetLowerBound(int dimension) GetType Method type GetType() GetUpperBound Method int GetUpperBound(int dimension) GetValue Method System.Object GetValue(Params int[] indices), System.Object GetValu... Initialize Method System.Void Initialize() Set Method System.Void Set(int , System.Object ) SetValue Method System.Void SetValue(System.Object value, int index), System.Void S... ToString Method string ToString() IsFixedSize Property System.Boolean IsFixedSize {get;} IsReadOnly Property System.Boolean IsReadOnly {get;} IsSynchronized Property System.Boolean IsSynchronized {get;} Length Property System.Int32 Length {get;} LongLength Property System.Int64 LongLength {get;} Rank Property System.Int32 Rank {get;}Arrays in .NET, and PowerShell, are fixed size. To remove an element you need to copy all but the element to be removed, in PSH this can be done with
Where-Object:Similarly
Select-Objectwith-Firstand-Skipparameters can be used to select elements before or after (resp3ectively) an index.NB
System.Arraydoes implementSystem.Collections.ILstbut the explicit implementation ofIList.Removejust throws aNotImplementedException.