Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает ключевое слово hidden, которое скрывает члены класса от результатов Get-Member по умолчанию.
Длинное описание
При использовании ключевого слова hidden в скрипте вы по умолчанию скрываете члены класса. Скрытые члены не отображаются в результатах выполнения Get-Member командлета Get-Member, IntelliSense или завершения вкладки. Чтобы отобразить элементы, которые вы скрыли с помощью ключевого слова hidden, добавьте в команду параметр Get-Member.
Ключевое слово hidden может скрыть:
- методы (включая конструкторы)
- События
- Свойства псевдонима
- другие типы элементов (включая статические элементы)
Скрытые элементы не отображаются в завершении вкладки или IntelliSense, если только завершение не происходит в классе, определяющем скрытый элемент.
Новый атрибут, System.Management.Automation.HiddenAttribute, позволяет коду C# иметь ту же семантику в PowerShell.
Ключевое слово hidden полезно для создания свойств и методов в классе, которые не обязательно хотят, чтобы пользователи класса могли просматривать или легко изменять.
Ключевое слово hidden не влияет на возможность просмотра или изменения членов класса. Как и все ключевые слова языка в PowerShell, hidden не учитывает регистр, а скрытые элементы по-прежнему открыты.
Ключевое слово hidden вместе с пользовательскими классами было представлено в Windows PowerShell 5.0.
Example
В следующем примере показано, как использовать ключевое слово hidden в определении класса. Метод класса Car, Drive, имеет свойство, Rides, который не требуется просматривать или изменять, так как он просто превышает количество раз, когда Drive вызывается в классе Car. Метрика, которая не важна для пользователей класса (например, подумайте о том, что, покупая автомобиль, вы не будете спрашивать продавца о количестве совершённых поездок на машине).
Так как пользователям класса не требуется изменять это свойство, можно скрыть свойство от Get-Member и автоматических результатов завершения с помощью ключевого слова hidden.
Добавьте ключевое слово hidden, введя его в ту же строку инструкции, что и свойство и его тип данных. Хотя ключевое слово может располагаться в любом порядке в этой строке, использование ключевого слова hidden в начале инструкции облегчает вам в дальнейшем идентификацию всех участников, которых вы скрыли.
class Car
{
# Properties
[string] $Color
[string] $ModelYear
[int] $Distance
# Method
[int] Drive ([int]$Miles)
{
$this.Distance += $Miles
$this.Rides++
return $this.Distance
}
# Hidden property of the Drive method
hidden [int] $Rides = 0
}
Теперь создайте новый экземпляр класса Car и сохраните его в переменной $TestCar.
$TestCar = [Car]::new()
После создания нового экземпляра передайте содержимое переменной $TestCar в Get-Member. Обратите внимание, что свойство Rides не является одним из членов, перечисленных в результатах команды Get-Member.
PS C:\Windows\system32> $TestCar | Get-Member
TypeName: Car
Name MemberType Definition
---- ---------- ----------
Drive Method int Drive(int Miles)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Color Property string Color {get;set;}
Distance Property int Distance {get;set;}
ModelYear Property string ModelYear {get;set;}
Теперь попробуйте запустить Get-Member еще раз, но на этот раз добавьте параметр -Force.
Обратите внимание, что результаты содержат скрытое свойство Rides среди других элементов, скрытых по умолчанию.
PS C:\Windows\system32> $TestCar | Get-Member -Force
TypeName: Car
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1
psadapted MemberSet psadapted {Color, ModelYear, Distance,
psbase MemberSet psbase {Color, ModelYear, Distance,...
psextended MemberSet psextended {}
psobject MemberSet psobject {BaseObject, Members,...
Drive Method int Drive(int Miles)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
get_Color Method string get_Color()
get_Distance Method int get_Distance()
get_ModelYear Method string get_ModelYear()
get_Rides Method int get_Rides()
set_Color Method void set_Color(string )
set_Distance Method void set_Distance(int )
set_ModelYear Method void set_ModelYear(string )
set_Rides Method void set_Rides(int )
ToString Method string ToString()
Color Property string Color {get;set;}
Distance Property int Distance {get;set;}
ModelYear Property string ModelYear {get;set;}
Rides Property int Rides {get;set;}
См. также
PowerShell