Delen via


about_Properties

Korte beschrijving

Hierin wordt beschreven hoe u objecteigenschappen gebruikt in PowerShell.

Lange beschrijving

PowerShell maakt gebruik van gestructureerde verzamelingen informatie die objecten worden genoemd om de items in gegevensarchieven of de status van de computer weer te geven. Normaal gesproken werkt u met objecten die deel uitmaken van microsoft .NET Framework, maar u kunt ook aangepaste objecten maken in PowerShell.

De koppeling tussen een item en het object is zeer dichtbij. Wanneer u een object wijzigt, wijzigt u meestal het item dat het voorstelt. Wanneer u bijvoorbeeld een bestand in PowerShell krijgt, krijgt u het werkelijke bestand niet. In plaats daarvan krijgt u een FileInfo-object dat het bestand vertegenwoordigt. Wanneer u het FileInfo-object wijzigt, wordt het bestand ook gewijzigd.

De meeste objecten hebben eigenschappen. Eigenschappen zijn de gegevens die zijn gekoppeld aan een object. Verschillende typen objecten hebben verschillende eigenschappen. Een FileInfo-object, dat een bestand vertegenwoordigt, heeft bijvoorbeeld een Eigenschap IsReadOnly die bevat $True als het bestand het kenmerk Alleen-lezen heeft en $False als dit niet het kenmerk Heeft. Een DirectoryInfo-object , dat een bestandssysteemmap vertegenwoordigt, heeft een bovenliggende eigenschap die het pad naar de bovenliggende map bevat.

Objecteigenschappen

Gebruik de Get-Member cmdlet om de eigenschappen van een object op te halen. Als u bijvoorbeeld de eigenschappen van een FileInfo-object wilt ophalen, gebruikt u de Get-ChildItem cmdlet om het FileInfo-object op te halen dat een bestand vertegenwoordigt. Gebruik vervolgens een pijplijnoperator (|) om het FileInfo-object naar te Get-Memberverzenden. Met de volgende opdracht wordt het powershell.exe bestand opgeslagen en verzonden naar Get-Member. De $PSHOME automatische variabele bevat het pad van de Installatiemap van PowerShell.

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

De uitvoer van de opdracht bevat de leden van het FileInfo-object . Leden bevatten zowel eigenschappen als methoden. Wanneer u in PowerShell werkt, hebt u toegang tot alle leden van de objecten.

Als u alleen de eigenschappen van een object en niet de methoden wilt ophalen, gebruikt u de parameter MemberType van de Get-Member cmdlet met een waarde van Property, zoals wordt weergegeven in het volgende voorbeeld.

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;}

Nadat u de eigenschappen hebt gevonden, kunt u deze gebruiken in uw PowerShell-opdrachten.

Eigenschapswaarden

Hoewel elk object van een specifiek type dezelfde eigenschappen heeft, beschrijven de waarden van deze eigenschappen het specifieke object. Elk FileInfo-object heeft bijvoorbeeld een eigenschap CreationTime, maar de waarde van die eigenschap verschilt voor elk bestand.

De meest voorkomende manier om de waarden van de eigenschappen van een object op te halen, is door de operator voor lidtoegang (.) te gebruiken. Typ een verwijzing naar het object, zoals een variabele die het object bevat of een opdracht waarmee het object wordt opgehaald. Typ vervolgens de operator (.) gevolgd door de naam van de eigenschap.

Met de volgende opdracht wordt bijvoorbeeld de waarde van de eigenschap CreationTime van het powershell.exe bestand weergegeven. De Get-ChildItem opdracht retourneert een FileInfo-object dat de powershell.exe file. De opdracht staat tussen haakjes om ervoor te zorgen dat deze wordt uitgevoerd voordat er eigenschappen worden geopend.

(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM

U kunt een object ook opslaan in een variabele en vervolgens de eigenschappen ophalen met behulp van de methode voor lidtoegang (.), zoals wordt weergegeven in het volgende voorbeeld:

$a = Get-ChildItem $PSHOME\powershell.exe
$a.CreationTime
Saturday, June 5, 2021 7:07:00 AM

U kunt de en Format-List cmdlets ook gebruiken Select-Object om de eigenschapswaarden van een object weer te geven. Select-Objecten Format-List elk een eigenschapsparameter hebben. U kunt de parameter Eigenschap gebruiken om een of meer eigenschappen en de bijbehorende waarden op te geven. U kunt ook het jokerteken (*) gebruiken om alle eigenschappen weer te geven.

Met de volgende opdracht worden bijvoorbeeld de waarden van alle eigenschappen van het powershell.exe bestand weergegeven.

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.22000.1 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft? Windows? Operating System
                    ProductVersion:   10.0.22000.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.22000.1_none_bf599c
                    5a06fbb6f4\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      : 6/5/2021 7:07:00 AM
CreationTimeUtc   : 6/5/2021 12:07:00 PM
LastAccessTime    : 7/18/2022 12:16:17 PM
LastAccessTimeUtc : 7/18/2022 5:16:17 PM
LastWriteTime     : 6/5/2021 7:07:00 AM
LastWriteTimeUtc  : 6/5/2021 12:07:00 PM
Attributes        : Archive

Statische eigenschappen

U kunt de statische eigenschappen van .NET-klassen gebruiken in PowerShell. Statische eigenschappen zijn eigenschappen van klasse, in tegenstelling tot standaardeigenschappen, die eigenschappen van een object zijn.

Gebruik de statische parameter van de Get-Member cmdlet om de statische eigenschappen van een klasse op te halen. Met de volgende opdracht worden bijvoorbeeld de statische eigenschappen van de System.DateTime klasse ophaalt.

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;}

Gebruik de volgende syntaxis om de waarde van een statische eigenschap op te halen.

[<ClassName>]::<Property>

Met de volgende opdracht wordt bijvoorbeeld de waarde opgehaald van de statische eigenschap UtcNow van de System.DateTime klasse.

[System.DateTime]::UtcNow

Opsomming voor lidtoegang

Als u vanaf PowerShell 3.0 de operator voor lidtoegang (.) gebruikt om toegang te krijgen tot een eigenschap die niet bestaat in een lijstverzameling, wordt in PowerShell automatisch de items in de verzameling opgesomd en wordt de waarde van de eigenschap voor elk item geretourneerd. Zie about_Member-Access_Enumeration voor meer informatie.

Voorbeelden

Met deze opdracht wordt de waarde geretourneerd van de eigenschap DisplayName van elke service die Get-Service wordt geretourneerd.

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

Alle verzamelingen hebben een eigenschap Count die het aantal objecten in de verzameling retourneert.

(Get-Service).Count
176

Vanaf PowerShell 3.0 kunt u de eigenschap Count of Length ophalen van singleton-objecten die geen verzamelingen zijn.

(Get-Service Audiosrv).Count
1

Sommige objecten hebben echter een eigenschap Length . De lengte van een tekenreeks is bijvoorbeeld het aantal tekens in de tekenreeks. De eigenschap Count is het aantal exemplaren van het object.

PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1

Als er een eigenschap bestaat op de afzonderlijke objecten en in de verzameling, wordt alleen de eigenschap van de verzameling geretourneerd.

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

Zie ook