Поделиться через


about_Properties

Краткое описание

Описывает использование свойств объекта в PowerShell.

Длинное описание

PowerShell использует структурированные коллекции данных, называемые объектами, для представления элементов в хранилищах данных или состоянии компьютера. Как правило, вы работаете с объектами, которые являются частью Microsoft .NET Framework, но вы также можете создавать пользовательские объекты в PowerShell.

Связь между элементом и его объектом очень близка. При изменении объекта обычно изменяется элемент, который он представляет. Например, при получении файла в PowerShell не получается фактический файл. Вместо этого вы получите объект FileInfo, представляющий файл. При изменении объекта FileInfo файл также изменяется.

Большинство объектов имеют свойства. Свойства — это данные, связанные с объектом. Различные типы объектов имеют разные свойства. Например, объект FileInfo, представляющий файл, имеет свойство IsReadOnly, содержащее $true, если файл имеет атрибут только для чтения и $false, если он не имеет. Объект DirectoryInfo, представляющий каталог файловой системы, имеет свойство Parent, содержащее путь к родительскому каталогу.

Свойства объекта

Чтобы получить свойства объекта, используйте командлет Get-Member. Например, чтобы получить свойства объекта FileInfo, используйте командлет Get-ChildItem для получения объекта FileInfo, представляющего файл. Затем используйте оператор конвейера (|), чтобы отправить объект FileInfo в Get-Member. Следующая команда получает файл pwsh.exe и отправляет его в Get-Member. $PSHOME автоматическая переменная содержит путь к каталогу установки PowerShell.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member

Выходные данные команды перечисляют элементы объекта FileInfo. Члены включают как свойства, так и методы. При работе в PowerShell у вас есть доступ ко всем членам объектов.

Чтобы получить только свойства объекта, а не методы, используйте параметр MemberType командлета Get-Member со значением Property, как показано в следующем примере.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member -MemberType Property
TypeName: System.IO.FileInfo

Name              MemberType Definition
----              ---------- ----------
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   System.DateTime CreationTime {get;set;}
CreationTimeUtc   Property   System.DateTime CreationTimeUtc {get;set;}
Directory         Property   System.IO.DirectoryInfo Directory {get;}
DirectoryName     Property   System.String DirectoryName {get;}
Exists            Property   System.Boolean Exists {get;}
Extension         Property   System.String Extension {get;}
FullName          Property   System.String FullName {get;}
IsReadOnly        Property   System.Boolean IsReadOnly {get;set;}
LastAccessTime    Property   System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property   System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime     Property   System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc  Property   System.DateTime LastWriteTimeUtc {get;set;}
Length            Property   System.Int64 Length {get;}
Name              Property   System.String Name {get;}

После поиска свойств их можно использовать в командах PowerShell.

Значения свойств

Хотя каждый объект определенного типа имеет одинаковые свойства, значения этих свойств описывают конкретный объект. Например, каждый объект FileInfo FileInfo имеет свойство CreationTime, но значение этого свойства отличается для каждого файла.

Наиболее распространенным способом получения значений свойств объекта является использование оператора доступа к членам (.). Введите ссылку на объект, например переменную, содержащую объект, или команду, которая получает объект. Затем введите оператор (.), за которым следует имя свойства.

Например, следующая команда отображает значение свойства CreationTime файла pwsh.exe. Команда Get-ChildItem возвращает объект FileInfo, представляющий pwsh.exe file. Команда заключена в скобки, чтобы убедиться, что она выполняется перед доступом к любым свойствам.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Можно также сохранить объект в переменной, а затем получить его свойства с помощью метода доступа к члену (.), как показано в следующем примере:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Wednesday, November 13, 2024 10:12:26 PM

Можно также использовать командлеты Select-Object и Format-List для отображения значений свойств объекта. Select-Object и Format-List имеют параметр Property. Параметр свойства можно использовать для указания одного или нескольких свойств и их значений. Кроме того, можно использовать подстановочный знак (*) для представления всех свойств.

Например, следующая команда отображает значения всех свойств файла pwsh.exe.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7-preview\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.5.0.101
                      FileDescription:  PowerShell 7
                      Product:          PowerShell
                      ProductVersion:   7.5.0-rc.1 SHA: c0142dde17137e436e302b3c4e93e2d6dc50c5c4+c0142dde17137e436e302b3c4e93e2d6dc50c5c4
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral

BaseName            : pwsh
ResolvedTarget      : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target              :
LinkType            :
Name                : pwsh.exe
Length              : 284704
DirectoryName       : C:\Program Files\PowerShell\7-preview
Directory           : C:\Program Files\PowerShell\7-preview
IsReadOnly          : False
Exists              : True
FullName            : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension           : .exe
CreationTime        : 11/13/2024 10:12:26 PM
CreationTimeUtc     : 11/14/2024 4:12:26 AM
LastAccessTime      : 1/3/2025 1:38:13 PM
LastAccessTimeUtc   : 1/3/2025 7:38:13 PM
LastWriteTime       : 11/13/2024 10:12:26 PM
LastWriteTimeUtc    : 11/14/2024 4:12:26 AM
LinkTarget          :
UnixFileMode        : -1
Attributes          : Archive

Статические свойства

Статические свойства классов .NET можно использовать в PowerShell. Статические свойства — это свойства класса, в отличие от стандартных свойств, которые являются свойствами объекта.

Чтобы получить статические свойства класса, используйте параметр static командлета Get-Member. Например, следующая команда получает статические свойства класса System.DateTime.

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime

Name     MemberType Definition
----     ---------- ----------
MaxValue Property   static datetime MaxValue {get;}
MinValue Property   static datetime MinValue {get;}
Now      Property   datetime Now {get;}
Today    Property   datetime Today {get;}
UtcNow   Property   datetime UtcNow {get;}

Чтобы получить значение статического свойства, используйте следующий синтаксис.

[<ClassName>]::<Property>

Например, следующая команда получает значение UTCNow статического свойства класса System.DateTime.

[System.DateTime]::UtcNow

Перечисление доступа к членам

Начиная с PowerShell 3.0 при использовании оператора доступа к членам (.) для доступа к свойству, которое не существует, PowerShell автоматически перечисляет элементы в коллекции и возвращает значение свойства для каждого элемента.

Эта команда возвращает значение свойства displayName каждой службы, которая возвращает Get-Service.

(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...

Большинство коллекций в PowerShell имеют свойство Count, которое возвращает элементы числа в коллекции.

(Get-Service).Count
176

Если свойство существует в отдельных объектах и коллекции, возвращается только свойство коллекции.

PS> $collection = @(
     [pscustomobject]@{Length = "foo"}
     [pscustomobject]@{Length = "bar"}
)

# PowerShell returns the collection's Length.
$collection.Length
2

# Get the Length property of each item in the collection.
PS> $collection.GetEnumerator().Length
foo
bar

Дополнительные сведения см. в разделе about_Member-Access_Enumeration.

См. также