Get-Member (Microsoft.PowerShell.Utility)
Get-Member
- Модуль:
- Microsoft.PowerShell.Utility
Получает свойства и методы объектов.
Синтаксис
Get-Member
[-InputObject <PSObject>]
[[-Name] <String[]>]
[-MemberType <PSMemberTypes>]
[-View <PSMemberViewTypes>]
[-Static]
[-Force]
[<CommonParameters>]Описание
Командлет Get-Member получает члены, свойства и методы объектов.
Чтобы указать объект, используйте параметр InputObject или передайте объект в Get-Member. Чтобы получить информацию о статических членах, членах класса, а не экземпляра, используйте параметр Static. Чтобы получить только определенные типы членов, например NoteProperties, используйте параметр MemberType.
Get-Member возвращает список членов, отсортированный в алфавитном порядке. Сначала перечисляются методы, а затем свойства.
Примеры
Пример 1. Получение членов объектов процесса
Эта команда отображает свойства и методы объектов службы, созданных командлетом Get-Service.
Поскольку часть команды Get-Member не имеет параметров, для параметров используются значения по умолчанию. По умолчанию Get-Member не получает статические или внутренние члены.
Get-Service | Get-Member
TypeName: System.Service.ServiceController#StartupType
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
Disposed Event System.EventHandler Disposed(System.Object, System.EventArgs)
Close Method void Close()
Continue Method void Continue()
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[] args)
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.ServiceProcess.ServiceControllerSt...
BinaryPathName Property System.String {get;set;}
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DelayedAutoStart Property System.Boolean {get;set;}
DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
Description Property System.String {get;set;}
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
StartType Property System.ServiceProcess.ServiceStartMode StartType {get;}
StartupType Property Microsoft.PowerShell.Commands.ServiceStartupType {get;set;}
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
UserName Property System.String {get;set;}
ToString ScriptMethod System.Object ToString();Пример 2. Получение членов объектов службы
В этом примере получаются все члены (свойства и методы) объектов службы, полученные с помощью командлета Get-Service, включая внутренние члены, такие как PSBase, PSObject<. и методы get_ и set_.
Get-Service | Get-Member -Force
(Get-Service Schedule).PSBaseКоманда Get-Member использует параметр Force для добавления внутренних членов и элементов, созданных компилятором объектов, на экран. Вы можете использовать эти свойства и методы так же, как если бы вы использовали адаптированный метод объекта. Вторая команда показывает, как отобразить значение свойства PSBase службы расписания. Дополнительные сведения о внутренних членах см. в разделе about_Intrinsic_Members.
Пример 3. Получение расширенных членов объектов службы
В этом примере получаются методы и свойства объектов службы, которые были расширены с помощью файла Types.ps1xml или командлета Add-Member.
Get-Service | Get-Member -View Extended
TypeName: System.Service.ServiceController#StartupType
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
ToString ScriptMethod System.Object ToString();Команда Get-Member использует параметр View для получения только расширенных членов объектов службы. В данном случае расширенным элементом является свойство Name, которое является псевдонимом свойства ServiceName.
Пример 4. Получение свойств сценария объектов журнала событий.
В этом примере получаются свойства сценария объектов журнала событий в системном журнале в средстве просмотра событий.
Get-WinEvent -LogName System -MaxEvents 1 | Get-Member -MemberType NoteProperty
TypeName: System.Diagnostics.Eventing.Reader.EventLogRecord
Name MemberType Definition
---- ---------- ----------
Message NoteProperty string Message=The machine-default permission settings do not grant Local ...Параметр MemberType получает только объекты со значением NoteProperty для их свойства MemberType.
Команда возвращает свойство Message объекта EventLogRecord.
Пример 5. Получение объектов с указанным свойством
В этом примере получаются объекты, имеющие свойство MachineName в выходных данных из списка командлетов.
Переменная $list содержит список командлетов, которые необходимо оценить. Оператор foreach вызывает каждую команду и отправляет результаты в Get-Member. Параметр Name ограничивает результаты Get-Member элементами с именем MachineName.
$list = "Get-Process", "Get-Service", "Get-Culture", "Get-PSDrive", "Get-ExecutionPolicy"
foreach ($cmdlet in $list) {& $cmdlet | Get-Member -Name MachineName}
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
MachineName Property string MachineName {get;}
TypeName: System.Service.ServiceController#StartupType
Name MemberType Definition
---- ---------- ----------
MachineName Property string MachineName {get;set;}Результаты показывают, что только объекты процессов и объекты служб имеют свойство MachineName.
Пример 6. Получение элементов массива
В этом примере показано, как найти члены массива объектов. Когда вы передаете массив объектов в Get-Member, командлет возвращает список членов для каждого уникального типа объекта в массиве. Если вы передаете массив с помощью параметра InputObject, массив обрабатывается как один объект.
$array = @(1,'hello')
$array | Get-Member
TypeName: System.Int32
Name MemberType Definition
---- ---------- ----------
CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int ICompar...
Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)
...
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone(), System.Object ICloneable.Clone()
CompareTo Method int CompareTo(System.Object value), int CompareTo(str...
Contains Method bool Contains(string value), bool Contains(string val...
CopyTo Method void CopyTo(int sourceIndex, char[] destination, int ...
EndsWith Method bool EndsWith(string value), bool EndsWith(string val...
EnumerateRunes Method System.Text.StringRuneEnumerator EnumerateRunes()
Equals Method bool Equals(System.Object obj), bool Equals(string va...
GetEnumerator Method System.CharEnumerator GetEnumerator(), System.Collect...
GetHashCode Method int GetHashCode(), int GetHashCode(System.StringCompa...
...
Get-Member -InputObject $array
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Add Method int IList.Add(System.Object value)
Address Method System.Object&, System.Private.CoreLib, Version=4.0.0.0, Cu...
Clear Method void IList.Clear()
Clone Method System.Object Clone(), System.Object ICloneable.Clone()
CompareTo Method int IStructuralComparable.CompareTo(System.Object other, Sy...
...Переменная $array содержит объект Int32 и объект string, как видно, когда массив передается по конвейеру в Get-Member. Когда $array передается с использованием параметра InputObject, Get-Member возвращает элементы типа Object[].
Пример 7. Определите, какие свойства объекта вы можете установить.
В этом примере показано, как определить, какие свойства объекта можно изменить.
$File = Get-Item c:\test\textFile.txt
$File.PSObject.Properties | Where-Object isSettable | Select-Object -Property Name
Name
----
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
PSIsContainer
IsReadOnly
CreationTime
CreationTimeUtc
LastAccessTime
LastAccessTimeUtc
LastWriteTime
LastWriteTimeUtc
AttributesПример 8. Перечислите свойства объекта в том порядке, в котором они были созданы.
В этом примере создается новый PSObject и добавляются к нему свойства. Get-Member перечисляет свойства в алфавитном порядке. Чтобы просмотреть свойства в том порядке, в котором они были добавлены к объекту, вы должны использовать внутренний элемент PSObject.
$Asset = New-Object -TypeName PSObject
$d = [ordered]@{Name="Server30";System="Server Core";PSVersion="4.0"}
$Asset | Add-Member -NotePropertyMembers $d -TypeName Asset
$Asset.PSObject.Properties | Select-Object Name, Value
Name Value
---- -----
Name Server30
System Server Core
PSVersion 4.0Параметры
-Force
Добавляет на экран внутренние члены и созданные компилятором методы get_ и set_. В следующем списке описаны свойства, которые добавляются при использовании параметра Force:
PSBase: исходные свойства объекта .NET без расширения или адаптации. Это свойства, определенные для класса объекта.PSAdapted: свойства и методы, определенные в системе расширенных типов PowerShell.PSExtended: свойства и методы, добавленные в файлыTypes.ps1xmlили с помощью командлетаAdd-Member.PSObject: адаптер, преобразующий базовый объект в объект PSObject PowerShell.PSTypeNames: список типов объектов, описывающих объект, в порядке их специфичности. При форматировании объекта PowerShell ищет типы в файлахFormat.ps1xmlв каталоге установки PowerShell ($PSHOME). Он использует определение форматирования для первого найденного типа.
По умолчанию Get-Member получает эти свойства во всех представлениях, кроме Base и Adapted, но не отображает их.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает объект, члены которого извлекаются.
Использование параметра InputObject — это не то же самое, что передача объекта по конвейеру в Get-Member. Различия заключаются в следующем:
- Когда вы передаете коллекцию объектов в
Get-Member,Get-Memberполучает элементы отдельных объектов в коллекции, например свойства каждой строки в массиве. струн. - Когда вы используете InputObject для отправки коллекции объектов,
Get-Memberполучает элементы коллекции, например свойства массива в массиве строк.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-MemberType
Указывает тип члена, который получает этот командлет. По умолчанию используется Все.
Допустимые значения этого параметра:
AliasPropertyCodePropertyPropertyNotePropertyScriptPropertyPropertiesPropertySetMethodCodeMethodScriptMethodMethodsParameterizedPropertyMemberSetEventDynamicAllЭти значения определяются как перечисление на основе флагов. С помощью этого параметра вы можете объединить несколько значений вместе, чтобы установить несколько флагов. Значения можно передавать в параметр MemberType как массив значений или как строку этих значений, разделенную запятыми. Командлет объединит значения с помощью операции двоичного ИЛИ. Передача значений в виде массива — это самый простой вариант, который также позволяет использовать для значений табуляцию.
Сведения об этих значениях см. в разделе Перечисление PSMemberTypes.
Не все объекты имеют все типы членов. Если вы укажете тип члена, которого нет у объекта, PowerShell вернет нулевое значение. Чтобы получить связанные типы членов, например все расширенные элементы, используйте параметр View. Если вы используете параметр MemberType с параметрами Static или View, Get-Member получает элементы, принадлежащие оба набора.
- Тип :
PSMemberTypes
- Псевдонимы:
Type
- Принятые значения:
AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Свойства, PropertySet, Метод, CodeMethod, ScriptMethod, Методы, ParameterizedProperty, MemberSet, Event, Динамический, Все
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Name
Указывает имена одного или нескольких свойств или методов объекта. Get-Member получает только указанные свойства и методы.
Если вы используете параметр Name с параметром MemberType, View или Static, Get-Member получает только те элементы, которые удовлетворяют критериям всех параметров.
Чтобы получить статический элемент по имени, используйте параметр Static с параметром Name.
- Тип :
String[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Static
Указывает, что этот командлет получает только статические свойства и методы объекта. Статические свойства и методы определяются для класса объектов, а не для какого-либо конкретного экземпляра класса.
Если вы используете параметр Static с параметрами View или Force, командлет игнорирует эти параметры. Если вы используете параметр Static с параметром MemberType, Get-Member получает только те элементы, которые принадлежат обоим наборам.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-View
Указывает, что этот командлет получает только свойства и методы определенных типов. Укажите одно или несколько значений. По умолчанию используется значение Адаптированный, Расширенный.
Допустимые значения этого параметра:
- База. Получает только исходные свойства и методы объекта .NET (без расширения или адаптации).
- Адаптировано. Получает только свойства и методы, определенные в системе расширенных типов PowerShell.
- Расширенный. Получает только те свойства и методы, которые были добавлены в файлы
Types.ps1xmlили с помощью командлетаAdd-Member. - Все. Получает элементы в базовом, адаптированном и расширенном представлениях.
Параметр View определяет извлекаемые элементы, а не только их отображение.
Чтобы получить определенные типы элементов, например свойства скрипта, используйте параметр MemberType. Если вы используете параметры MemberType и View в одной команде, Get-Member получает элементы, принадлежащие обоим наборам. Если вы используете параметры Static и View в одной команде, параметр View игнорируется.
- Тип :
PSMemberViewTypes
- Принятые значения:
Расширенный, Адаптированный, Базовый, Все
- Позиция:
Именованный
- Значение по умолчанию:
Адаптированный, Расширенный
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать любой объект.
Выходы
Определение элемента
Этот командлет возвращает MemberDefinition для каждого полученного свойства или метода.
Примечания
PowerShell включает следующие псевдонимы для Get-Member:
Все платформы:
gm
Вы можете получить информацию об объекте коллекции либо с помощью параметра InputObject, либо путем передачи объекта, которому предшествует запятая, в Get-Member.
Вы можете использовать автоматическую переменную $This в блоках скриптов, определяющих значения новых свойств и методов. Переменная $This относится к экземпляру объекта, к которому добавляются свойства и методы. Дополнительные сведения о переменной $This см. в разделе about_Automatic_Variables.
Если вы передаете объект, представляющий тип, например литерал типа, такой как [int], Get-Member возвращает информацию о Тип [System.RuntimeType]. Однако при использовании параметра Static Get-Member возвращает статические члены определенного типа, представленного экземпляром System.RuntimeType.