Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает использование свойств объекта в PowerShell.
Длинное описание
PowerShell использует структурированные коллекции данных, называемые объектами, для представления элементов в хранилищах данных или состоянии компьютера. Как правило, вы работаете с объектами, которые являются частью Microsoft платформа .NET Framework, но вы также можете создавать пользовательские объекты в PowerShell.
Элемент и его объект тесно связаны между собой. При изменении объекта обычно изменяется и элемент, который он представляет. Например, при получении файла в PowerShell не получается фактический файл. Вместо этого вы получите объект FileInfo , представляющий файл. При изменении объекта FileInfo файл также изменяется.
Большинство объектов имеют свойства. Свойства — это данные, связанные с объектом. Различные типы объектов имеют разные свойства. Например, объект FileInfo, представляющий файл, имеет свойство IsReadOnlyатрибут только для чтения и $true если он отсутствует. Объект DirectoryInfo , представляющий каталог файловой системы, имеет свойство Parent , содержащее путь к родительскому каталогу.
Свойства объекта
Чтобы получить свойства объекта, используйте Get-Member командлет. Например, чтобы получить свойства , представляющий файл. Затем используйте оператор конвейера (|), чтобы отправить объект FileInfo в Get-Member. Следующая команда получает powershell.exe файл и отправляет его Get-Memberв . Автоматическая $PSHOME переменная содержит путь к каталогу установки PowerShell.
Get-ChildItem $PSHOME\powershell.exe | Get-Member
Выходные данные команды перечисляют члены объекта FileInfo . К элементам относятся свойства и методы. При работе в PowerShell у вас есть доступ ко всем членам объектов.
Чтобы получить только свойства объекта, а не методы, используйте командлета со значением Get-Member, как показано в следующем примере.
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 , но значение этого свойства отличается для каждого файла.
Наиболее распространенным способом получения значений свойств объекта является использование оператора доступа к члену (.). Введите ссылку на объект, например переменную, содержащую этот объект, либо команду, которая его возвращает. Затем введите оператор (.), за которым следует имя свойства.
Например, следующая команда отображает значение файла. Команда Get-ChildItem возвращает объект FileInfo , представляющий powershell.exe fileобъект . Команда заключена в скобки, чтобы убедиться, что она выполняется перед доступом к любым свойствам.
(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM
Можно также сохранить объект в переменной, а затем получить его свойства с помощью метода доступа к члену (.), как показано в следующем примере:
$a = Get-ChildItem $PSHOME\powershell.exe
$a.CreationTime
Wednesday, January 24, 2024 1:18:29 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\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
Mode : -a----
VersionInfo : File: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
InternalName: POWERSHELL
OriginalFilename: PowerShell.EXE.MUI
FileVersion: 10.0.22621.1 (WinBuild.160101.0800)
FileDescription: Windows PowerShell
Product: Microsoft® Windows® Operating System
ProductVersion: 10.0.22621.1
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: English (United States)
BaseName : powershell
Target : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-exe_31bf3856ad364e35_10.0.22621.3085_none_492
e8ee57da24e0e\powershell.exe}
LinkType : HardLink
Name : powershell.exe
Length : 450560
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 : 1/24/2024 1:18:29 AM
CreationTimeUtc : 1/24/2024 7:18:29 AM
LastAccessTime : 1/3/2025 1:36:20 PM
LastAccessTimeUtc : 1/3/2025 7:36:20 PM
LastWriteTime : 1/24/2024 1:18:29 AM
LastWriteTimeUtc : 1/24/2024 7:18:29 AM
Attributes : Archive
Статические свойства
Статические свойства классов .NET можно использовать в PowerShell. Статические свойства — это свойства класса, в отличие от стандартных свойств, которые являются свойствами экземпляра объекта.
Чтобы получить статические свойства класса, используйте статический параметр командлета 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
Перечисление доступа к членам
Начиная с 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.
См. также
PowerShell