Как использовать командлет PowerShell Get-Member

Вопрос с новичком:

Команда:

[Math] | Get-Member

Возвращает все элементы System.RuntimeType. Почему это?

Также команда:

Get-Member -InputObject [Math]

Возвращает все элементы System.String. Если [Math] интерпретируется как строка здесь, как я могу сделать его математическим объектом?

Также, Get-member принимает любые позиционные параметры? Как я могу сказать?

Ответ 1

Вы получаете System.RuntimeType из [Math], потому что это то, что есть. Это тип класса, а не объект этого конкретного типа. На самом деле вы не создали объект [Math]. Вы получите тот же результат, если вы набрали:

[String] | gm

Однако, если вы построили строковый объект из типа String, вы получите строки:

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...

Так как System.Math имеет только статические члены, вы не можете построить его объект. Чтобы увидеть его, вы можете использовать функцию GetMembers() System.RuntimeType:

[Math].GetMethods()

Вы можете использовать один из команд format- * для форматирования вывода:

[Math].GetMethods() | format-table

Изменить: О, и я должен добавить, чтобы вызвать один из статических членов, вы сделали бы это следующим образом:

[Math]::Cos(1.5)

Ответ 2

Я только что написал сообщение для изучения статических членов классов с помощью PowerShell, что могло бы помочь.

Что происходит, когда вы передаете [Math] в Get-Member, вы передаете объект System.RunTimeType, и он возвращает члены этого типа.

Существует параметр switch для Get-Member, который позволяет вам проверять все статические члены класса:

[Math] | get-member -static

Если вам нужно найти экземпляры экземпляра, вам нужно будет создать экземпляр класса и канала для Get-Member.

Ответ 3

Кроме того, делает ли Get-member любой позиционные параметры? Как я могу сказать?

Если имя параметра завернуто в '[]', тогда имя является необязательным, поэтому параметр является позиционным. Например, для Get-Member (определение ниже), Name является позиционным, но InputObject не является.

Get-Member [[-Name]] [-Force] [-InputObject] [-MemberType {AliasProperty | CodeProperty | Pro perty | NoteProperty | ScriptProperty | Недвижимость | Свойство | Метод | CodeMethod | ScriptMethod | Методы | P arameterizedProperty | MemberSet | Событие | Все}] [-Static] [-View {Extended | Адаптировано | База | Все}] []

Для первых 2 вопросов кажется, что вы ожидаете, что они будут вести себя как объекты, но вы входите в пространство имен/класс. Если вы делаете "1 | gm" или "gm -inputobject 1", вы увидите больше того, что хотите/ожидаете.

Ответ 4

  • Используя команду get-help get-member, вы получите этот вывод

NAME   Get-Member

СИНТАКСИС   Возвращает свойства и методы объектов.

СИНТАКСИС   Get-Member [[-Name]] [-Force] [-InputObject] [-MemberType {AliasProperty | CodeProperty | профессионал   perty | NoteProperty | ScriptProperty | Недвижимость | Свойство | Метод | CodeMethod | ScriptMethod | Методы | п   arameterizedProperty | MemberSet | Событие | Все}] [-Static] [-View {Extended | Адаптировано | База | Все}] []

ОПИСАНИЕ   Командлет Get-Member получает "члены" (свойства и методы) объектов.

To specify the object, use the InputObject parameter or pipe an object to Get-Member. To retrieve information about
 static members (members of the class, not of the instance), use the Static parameter. To get only certain types of
 members, such as NoteProperties, use the MemberType parameter.

ССЫЛКИ ПО ССЫЛКЕ   Онлайн-версия: http://go.microsoft.com/fwlink/?LinkID=113322  Добавить участников   Получить помощь   Get-Command   Get-PSDrive

СЛОВО   Чтобы увидеть примеры, введите: "get-help Get-Member -examples".   Для получения дополнительной информации введите: "get-help Get-Member -Detailed".   Для получения технической информации введите: "get-help Get-Member -full".

  • Из приведенного выше утверждения он показывает, что get-member принимает только объекты, а не классы. Вы используете -Static для просмотра статических элементов объекта.

  • Когда вы используете [String] без параметра -Static, вы говорите powershell, что вы помещаете объект типа [String], однако вы еще не создали объект String из любого из своих утверждений, чтобы он предполагает, что [String] - объект System.Runtime, представляющий класс String.Это похоже, если вы используете [Int] или [Boolean] и другие типы классов.

  • Однако, если вы используете параметр -Static, интерпретатор powershell теперь понимает, что вам нужны статические члены String Objects.