Dela via


Om egenskaper

Kort beskrivning

Beskriver hur du använder objektegenskaper i PowerShell.

Lång beskrivning

PowerShell använder strukturerade samlingar av 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 är det skrivskyddade attributet och $False om det inte gör det. Ett DirectoryInfo-objekt, som representerar en filsystemkatalog, har en parent-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 filen PowerShell.exe 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

Kommandots utdata 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", som du ser i 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 metoden dot. Skriv en referens till objektet, till exempel en variabel som innehåller objektet eller ett kommando som hämtar objektet. Skriv sedan en punkt (.) följt av egenskapsnamnet.

Följande kommando visar till exempel värdet för egenskapen CreationTime för den PowerShell.exe filen. Kommandot Get-ChildItem returnerar ett FileInfo-objekt som representerar den PowerShell.exe filen. Kommandot omges av parenteser för att se till att det körs innan några egenskaper används. Kommandot Get-ChildItem följs av en punkt och namnet på egenskapen CreationTime enligt följande:

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

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

$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 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 parametern Egenskap 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 den PowerShell.exe filen.

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

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

Egenskaper för skalära objekt och samlingar

Egenskaperna för ett ("skalärt") objekt av en viss typ skiljer sig ofta från egenskaperna för en samling objekt av samma typ. Till exempel har varje tjänst som egenskapen DisplayName , men en samling tjänster har inte egenskapen DisplayName .

Följande kommando hämtar värdet för egenskapen DisplayName för tjänsten Audiosrv.

(Get-Service Audiosrv).DisplayName
Windows Audio

Från och med PowerShell 3.0 försöker PowerShell förhindra skriptfel som beror på de olika egenskaperna för skalära objekt och samlingar. Samma kommando 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
...

När du skickar en samling, men begär en egenskap som bara finns på enskilda ("skalära")-objekt, returnerar PowerShell värdet för den egenskapen för varje objekt i samlingen.

Alla samlingar har egenskapen Antal som returnerar hur många objekt som finns i samlingen.

(Get-Service).Count
176

Från och med PowerShell 3.0 returnerar PowerShell rätt värde om du begär egenskapen Antal eller Längd för noll objekt eller ett objekt.

(Get-Service Audiosrv).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

Den här funktionen fungerar också på metoder för skalära objekt och samlingar. Mer information finns i about_Methods.

Se även

about_Methods

about_Objects

Get-Member

Select-Object

Format-List