Si sta ottenendo un System.RuntimeType da [Math] perché questo è quello che è. È un tipo di classe rispetto a un oggetto di quel tipo particolare. Non hai effettivamente costruito un oggetto [Math]. Si otterrà lo stesso risultato se si è digitato:
[String] | gm
Tuttavia, se hai costruito un oggetto stringa dal tipo String, si otterrebbe i membri della stringa:
PS C:\> [String]("hi") | gm
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone()
CompareTo Method System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB)
Contains Method System.Boolean Contains(String value)
CopyTo Method System.Void CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIn...
etc...
Dal momento che ha solo System.Math membri statici, non è possibile costruirne un oggetto. Per vederli membri è possibile utilizzare la funzione GetMembers() di System.RuntimeType:
[Math].GetMethods()
È possibile utilizzare uno dei cmdlet Formato- * per formattare l'output:
[Math].GetMethods() | format-table
Edit: Oh, e devo aggiungere, di avvalersi di uno dei membri statici, si dovrebbe fare in questo modo:
[Math]::Cos(1.5)