Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
РАЗДЕЛ
about_Properties
КРАТКОЕ ОПИСАНИЕ
Содержит описание использования свойств объектов в Windows PowerShell.
ПОДРОБНОЕ ОПИСАНИЕ
В Windows PowerShell используются структурированные наборы данных, называемые объектами, для представления элементов в хранилищах данных или состояния компьютера. Чаще всего вы работаете с объектами, которые являются частью Microsoft .NET Framework, но также можете создавать пользовательские объекты в Windows PowerShell.
Связь между элементом и его объектом очень тесная. При изменении объекта изменяется и представляемый им элемент. Например, получая файл в Windows PowerShell, вы получаете не сам файл. Вы получаете объект FileInfo, который представляет файл. Когда изменяется объект FileInfo, файл также изменяется.
Большинство объектов имеют свойства. Свойства — это данные, связанные с объектом. Разные типы объектов имеют различные свойства. Например, объект FileInfo, который представляет файл, имеет свойство IsReadOnly, содержащее значение $True, если файл имеет атрибут только для чтения, и $False в противном случае. Объект DirectoryInfo, который представляет каталог файловой системы, имеет свойство Parent, содержащее путь к родительскому каталогу.
СВОЙСТВА ОБЪЕКТА
Чтобы получить свойства объекта, используйте командлет Get-Member. Например, чтобы получить список свойств объекта FileInfo, используйте командлет Get-ChildItem для получения объекта FileInfo, представляющего файл. Затем с помощью оператора конвейера (|) передайте объект FileInfo в командлет Get-Member. Приведенная ниже команда получает файл PowerShell.exe и передает его командлету Get-Member. Автоматическая переменная $Pshome содержит путь к каталогу установки Windows PowerShell.
Get-ChildItem $pshome\PowerShell.exe | Get-Member
В выходных данных команды содержатся элементы объекта FileInfo. Элементы включают как свойства, так и методы. Работая в Windows 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;}
Узнав свойства, вы можете применять их в командах Windows PowerShell.
ЗНАЧЕНИЯ СВОЙСТВ
Все объекты определенного типа имеют одинаковые свойства, но значения свойств описывают конкретный объект. Например, каждый объект FileInfo имеет свойство CreationTime, но значение этого свойства различно для каждого файла.
Самый простой способ получить значения свойств объекта — использовать метод точки. Укажите объект. Например, введите переменную, содержащую объект, или команду, которая получает этот объект. Затем введите точку (.) и имя свойства.
Например, приведенная ниже команда отобразит значение свойства CreationTime файла PowerShell.exe. Команда Get-ChildItem возвращает объект FileInfo, представляющий файл PowerShell.exe. Команда заключена в скобки, чтобы гарантировать ее выполнение до того, как будет получен доступ к какому-либо свойству. За командой Get-ChildItem следует точка и имя свойства CreationTime.
C:\PS> (Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM
Также можно сохранить объект в переменной и затем извлечь его свойства с помощью метода точки, как показано в примере ниже.
C:\PS> $a = Get-ChildItem $pshome\PowerShell.exe
C:\PS> $a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM
Также можно использовать командлеты Select-Object и Format-List для отображения значений свойств объекта. Командлеты Select-Object и Format-List оба имеют параметр Property. С помощью параметра Property можно задать одно или несколько свойств и их значения. Либо можно использовать подстановочный знак (*) для обозначения всех свойств.
Например, приведенная ниже команда отобразит значения всех свойств файла PowerShell.exe.
C:\PS> Get-ChildItem $pshome\PowerShell.exe | Format-List -property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0
PSChildName : PowerShell.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
VersionInfo : File: C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
InternalName: POWERSHELL
OriginalFilename: PowerShell.EXE.MUI
File Version: 6.1.6570.1 (fbl_srv_PowerShell(nigels).070711-0102)
FileDescription: PowerShell.EXE
Product: Microsoft® Windows® Operating System
ProductVersion: 6.1.6570.1
Debug: False
Patched: False
PreRelease: False
PrivateBuild: True
SpecialBuild: False
Language: English (United States)
BaseName : PowerShell
Mode : -a---
Name : PowerShell.exe
Length : 160256
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.exe
Extension : .exe
CreationTime : 3/18/2008 12:07:52 AM
CreationTimeUtc : 3/18/2008 7:07:52 AM
LastAccessTime : 3/19/2008 8:13:58 AM
LastAccessTimeUtc : 3/19/2008 3:13:58 PM
LastWriteTime : 3/18/2008 12:07:52 AM
LastWriteTimeUtc : 3/18/2008 7:07:52 AM
Attributes : Archive
СТАТИЧЕСКИЕ СВОЙСТВА
В Windows PowerShell можно использовать статические свойства классов .NET. В отличие от стандартных свойств, которые являются свойствами объекта, статические свойства являются свойствами класса.
Чтобы определить статические свойства класса, используйте параметр 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
СВОЙСТВА СКАЛЯРНЫХ ОБЪЕКТОВ И КОЛЛЕКЦИЙ
Свойства отдельного («скалярного») объекта определенного типа часто отличаются от свойств коллекции объектов этого же типа.
Например, каждая служба имеет свойство DisplayName, но его нет у коллекции служб. Аналогичным образом все коллекции имеют свойство Count, которое сообщает, сколько объектов имеется в коллекции, но отдельные объекты не имеют такого свойства.
Начиная с версии Windows PowerShell 3.0 Windows PowerShell пытается предотвратить возникновение ошибок сценариев в результате различий в свойствах скалярных объектов и коллекций.
– Если вы указываете коллекцию, но запрашиваете свойство, которое имеется только у отдельных («скалярных») объектов, Windows PowerShell возвращает значение этого свойства для каждого объекта коллекции.
– Если вы запрашиваете свойство Count или Length для нуля объектов или одного объекта, Windows PowerShell возвращает правильное значение.
Если свойство имеется как у отдельных объектов, так и у коллекции, Windows PowerShell не изменяет результат.
Эта функция также работает применительно к методам скалярных объектов и коллекций. Подробнее см. в разделе about_Methods.
ПРИМЕРЫ
Например, у каждой службы есть свойство DisplayName. Приведенная ниже команда возвращает значение свойства DisplayName службы Audiosrv.
PS C:\>(Get-Service Audiosrv).DisplayName
Windows Audio
Однако у коллекции или массива служб нет свойства DisplayName. Приведенная ниже команда пытается получить свойство DisplayName всех служб в Windows PowerShell 2.0.
PS C:\>(Get-Service).DisplayName
PS C:\>
Начиная с версии Windows PowerShell 3.0 та же команда возвращает значение свойства DisplayName каждой службы, возвращаемой командлетом Get-Service.
PS C:\>(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
В свою очередь, коллекция из двух или более служб имеет свойство Count, которое содержит число объектов в коллекции.
PS C:\>(Get-Service).Count
176
У отдельных служб нет свойства Count или Length, как показано в этой команде в Windows PowerShell 2.0.
PS C:\>(Get-Service Audiosrv).Count
PS C:\>
Начиная с версии Windows PowerShell 3.0 эта команда возвращает правильное значение свойства Count.
PS C:\>(Get-Service Audiosrv).Count
1
СМ. ТАКЖЕ
about_Methods
about_Objects
Get-Member
Select-Object
Format-List