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ängden på en 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