about_Properties

Kort beskrivning

Beskriver hur du använder objektegenskaper i PowerShell.

Lång beskrivning

PowerShell använder strukturerade samlingar med information som kallas objekt för att representera objekten i datalager eller datorns tillstånd. Vanligtvis arbetar du med objekt som ingår i Microsoft .NET Framework, men du kan också skapa anpassade objekt i PowerShell.

Associationen mellan ett objekt och dess objekt är mycket nära. När du ändrar ett objekt ändrar du vanligtvis det objekt som det representerar. När du till exempel hämtar en fil i PowerShell får du inte den faktiska filen. I stället får du ett FileInfo-objekt som representerar filen. När du ändrar FileInfo-objektet ändras även filen.

De flesta objekt har egenskaper. Egenskaper är de data som är associerade med ett objekt. Olika typer av objekt har olika egenskaper. Till exempel har ett FileInfo-objekt, som representerar en fil, en IsReadOnly-egenskap som innehåller $True om filen har det skrivskyddade attributet och $False om det inte gör det. Ett DirectoryInfo-objekt , som representerar en filsystemkatalog, har en överordnad egenskap som innehåller sökvägen till den överordnade katalogen.

Objektegenskaper

Om du vill hämta egenskaperna för ett objekt använder du cmdleten Get-Member . Om du till exempel vill hämta egenskaperna för ett FileInfo-objekt använder du cmdleten Get-ChildItem för att hämta FileInfo-objektet som representerar en fil. Använd sedan en pipelineoperator (|) för att skicka FileInfo-objektet till Get-Member. Följande kommando hämtar powershell.exe filen och skickar den till Get-Member. Den $PSHOME automatiska variabeln innehåller sökvägen till PowerShell-installationskatalogen.

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

Utdata från kommandot visar medlemmarna i FileInfo-objektet . Medlemmar innehåller både egenskaper och metoder. När du arbetar i PowerShell har du åtkomst till alla objektmedlemmar.

Om du bara vill hämta egenskaperna för ett objekt och inte metoderna använder du parametern MemberType för cmdleten Get-Member med värdet Property, enligt följande exempel.

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

När du har hittat egenskaperna kan du använda dem i dina PowerShell-kommandon.

Egenskapsvärden

Även om varje objekt av en viss typ har samma egenskaper, beskriver värdena för dessa egenskaper det specifika objektet. Till exempel har varje FileInfo-objekt en CreationTime-egenskap , men värdet för den egenskapen skiljer sig åt för varje fil.

Det vanligaste sättet att hämta värdena för egenskaperna för ett objekt är att använda medlemsåtkomstoperatorn (.). Skriv en referens till objektet, till exempel en variabel som innehåller objektet, eller ett kommando som hämtar objektet. Skriv sedan operatorn (.) följt av egenskapsnamnet.

Följande kommando visar till exempel värdet för egenskapen CreationTime för powershell.exe filen. Kommandot Get-ChildItem returnerar ett FileInfo-objekt som representerar powershell.exe file. Kommandot omges av parenteser för att se till att det körs innan några egenskaper används.

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

Du kan också spara ett objekt i en variabel och sedan hämta dess egenskaper med hjälp av metoden medlemsåtkomst (.), som du ser i följande exempel:

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

Du kan också använda Select-Object cmdletarna och Format-List för att visa egenskapsvärdena för ett objekt. Select-Object och var och Format-List en har en egenskapsparameter . Du kan använda egenskapsparametern för att ange en eller flera egenskaper och deras värden. Du kan också använda jokertecknet (*) för att representera alla egenskaper.

Följande kommando visar till exempel värdena för alla egenskaper för powershell.exe filen.

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

Statiska egenskaper

Du kan använda statiska egenskaper för .NET-klasser i PowerShell. Statiska egenskaper är egenskaper för klassen, till skillnad från standardegenskaper, som är egenskaper för ett objekt.

Om du vill hämta statiska egenskaper för en klass använder du parametern Static för cmdleten Get-Member . Följande kommando hämtar till exempel klassens System.DateTime statiska egenskaper.

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

Använd följande syntax för att hämta värdet för en statisk egenskap.

[<ClassName>]::<Property>

Följande kommando hämtar till exempel värdet för den statiska utcNow-egenskapen för System.DateTime klassen.

[System.DateTime]::UtcNow

Uppräkning av medlemsåtkomst

Från och med PowerShell 3.0, när du använder operatorn för medlemsåtkomst (.) för att komma åt en egenskap som inte finns i en listsamling, räknar PowerShell automatiskt upp objekten i samlingen och returnerar värdet för egenskapen för varje objekt. Mer information finns i about_Member-Access_Enumeration.

Exempel

Det här kommandot returnerar värdet för egenskapen DisplayName för varje tjänst som Get-Service returneras.

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

Alla samlingar har egenskapen Count som returnerar antalet objekt i samlingen.

(Get-Service).Count
176

Från och med PowerShell 3.0 kan du hämta egenskapen Antal eller Längd för singleton-objekt som inte är samlingar.

(Get-Service Audiosrv).Count
1

Vissa objekt har dock egenskapen Längd . Till exempel är längdenen sträng antalet tecken i strängen. Egenskapen Count är antalet instanser av objektet.

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

Om det finns en egenskap för de enskilda objekten och i samlingen returneras endast samlingens egenskap.

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

Se även