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


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. Следующая команда получает файл PowerShell.exe и отправляет его в Get-Member. Переменная $Pshome automatic содержит путь к каталогу установки PowerShell.

Get-ChildItem $pshome\PowerShell.exe | Get-Member

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

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

Get-ChildItem $pshome\PowerShell.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 имеет свойство CreationTime, но значение этого свойства разное для каждого файла.

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

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

(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM

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

$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

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

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

Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\WindowsPowerShell\v1.0
PSChildName       : PowerShell.exe
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             C:\Windows\System32\WindowsPowerShell\
                    v1.0\PowerShell.exe
                    InternalName:     POWERSHELL
                    OriginalFilename: PowerShell.EXE.MUI
                    FileVersion:      10.0.16299.15 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft Windows Operating System
                    ProductVersion:   10.0.16299.15
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : PowerShell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex
                    e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p
                    owershell.exe}
LinkType          : HardLink
Name              : PowerShell.exe
Length            : 449024
DirectoryName     : C:\Windows\System32\WindowsPowerShell\v1.0
Directory         : C:\Windows\System32\WindowsPowerShell\v1.0
IsReadOnly        : False
Exists            : True
FullName          : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.ex
Extension         : .exe
CreationTime      : 9/29/2017 6:43:19 AM
CreationTimeUtc   : 9/29/2017 1:43:19 PM
LastAccessTime    : 9/29/2017 6:43:19 AM
LastAccessTimeUtc : 9/29/2017 1:43:19 PM
LastWriteTime     : 9/29/2017 6:43:19 AM
LastWriteTimeUtc  : 9/29/2017 1:43:19 PM
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>

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

[System.DateTime]::UtcNow

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

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

Примеры

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

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

Все коллекции имеют свойство Count , которое возвращает количество объектов в коллекции.

(Get-Service).Count
176

Начиная с PowerShell 3.0, если вы запрашиваете свойство Count или Length для нулевых объектов или одного объекта, PowerShell возвращает правильное значение.

(Get-Service Audiosrv).Count
1

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

$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2

См. также раздел