about_Properties

Krótki opis

Opisuje sposób używania właściwości obiektu w programie PowerShell.

Długi opis

Program PowerShell używa strukturalnych kolekcji informacji nazywanych obiektami do reprezentowania elementów w magazynach danych lub stanu komputera. Zazwyczaj pracujesz z obiektami, które są częścią programu Microsoft .NET Framework, ale można również tworzyć obiekty niestandardowe w programie PowerShell.

Skojarzenie między elementem a jego obiektem jest bardzo bliskie. Podczas zmiany obiektu zwykle zmienia się element, który reprezentuje. Na przykład po pobraniu pliku w programie PowerShell nie uzyskasz rzeczywistego pliku. Zamiast tego uzyskasz obiekt FileInfo reprezentujący plik. Zmiana obiektu FileInfo spowoduje również zmianę pliku.

Większość obiektów ma właściwości. Właściwości to dane skojarzone z obiektem. Różne typy obiektów mają różne właściwości. Na przykład obiekt FileInfo , który reprezentuje plik, ma właściwość IsReadOnly , która zawiera $True , jeśli plik ma atrybut tylko do odczytu i $False jeśli nie. Obiekt DirectoryInfo, który reprezentuje katalog systemu plików, ma właściwość Parent, która zawiera ścieżkę do katalogu nadrzędnego.

Właściwości obiektu

Aby uzyskać właściwości obiektu, użyj Get-Member polecenia cmdlet . Aby na przykład uzyskać właściwości obiektu FileInfo, użyj Get-ChildItem polecenia cmdlet , aby uzyskać obiekt FileInfo reprezentujący plik. Następnie użyj operatora potoku (|), aby wysłać obiekt FileInfo do .Get-Member Następujące polecenie pobiera pwsh.exe plik i wysyła go do Get-Memberpliku . Zmienna automatyczna $PSHOME zawiera ścieżkę katalogu instalacyjnego programu PowerShell.

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

Dane wyjściowe polecenia zawierają listę elementów członkowskich obiektu FileInfo . Elementy członkowskie obejmują zarówno właściwości, jak i metody. Podczas pracy w programie PowerShell masz dostęp do wszystkich elementów członkowskich obiektów.

Aby uzyskać tylko właściwości obiektu, a nie metody, użyj parametru Get-Member MemberType polecenia cmdlet z wartością Property, jak pokazano w poniższym przykładzie.

Get-ChildItem $PSHOME\pwsh.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;}

Po znalezieniu właściwości można ich używać w poleceniach programu PowerShell.

Wartości właściwości

Mimo że każdy obiekt określonego typu ma te same właściwości, wartości tych właściwości opisują określony obiekt. Na przykład każdy obiekt FileInfo ma właściwość CreationTime , ale wartość tej właściwości różni się dla każdego pliku.

Najczęstszym sposobem uzyskania wartości właściwości obiektu jest użycie operatora dostępu do składowych (.). Wpisz odwołanie do obiektu, takie jak zmienna zawierająca obiekt lub polecenie, które pobiera obiekt. Następnie wpisz operator (.), a następnie nazwę właściwości.

Na przykład następujące polecenie wyświetla wartość właściwości pwsh.exe CreationTime pliku. Polecenie Get-ChildItem zwraca obiekt FileInfo reprezentujący pwsh.exe fileobiekt . Polecenie jest ujęte w nawiasy, aby upewnić się, że jest wykonywane przed uzyskaniem dostępu do jakichkolwiek właściwości.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Wednesday, June 15, 2022 5:26:00 PM

Możesz również zapisać obiekt w zmiennej, a następnie pobrać jego właściwości przy użyciu metody dostępu do składowej (.), jak pokazano w poniższym przykładzie:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Wednesday, June 15, 2022 5:26:00 PM

Możesz również użyć poleceń Select-Object cmdlet i Format-List , aby wyświetlić wartości właściwości obiektu. Select-Object każda Format-Listz nich ma parametr Property . Możesz użyć parametru Właściwość , aby określić co najmniej jedną właściwość i ich wartości. Możesz też użyć symbolu wieloznakowego (*), aby reprezentować wszystkie właściwości.

Na przykład następujące polecenie wyświetla wartości wszystkich właściwości pliku pwsh.exe.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.2.5.500
                      FileDescription:  pwsh
                      Product:          PowerShell
                      ProductVersion:   7.2.5 SHA: 0aad398b0e918ce7d73dca929ca6395639085b21
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral

BaseName            : pwsh
Target              :
LinkType            :
Length              : 287648
DirectoryName       : C:\Program Files\PowerShell\7
Directory           : C:\Program Files\PowerShell\7
IsReadOnly          : False
FullName            : C:\Program Files\PowerShell\7\pwsh.exe
Extension           : .exe
Name                : pwsh.exe
Exists              : True
CreationTime        : 6/15/2022 5:26:00 PM
CreationTimeUtc     : 6/15/2022 10:26:00 PM
LastAccessTime      : 7/18/2022 11:32:06 AM
LastAccessTimeUtc   : 7/18/2022 4:32:06 PM
LastWriteTime       : 6/15/2022 5:26:00 PM
LastWriteTimeUtc    : 6/15/2022 10:26:00 PM
LinkTarget          :
Attributes          : Archive

Właściwości statyczne

Właściwości statycznych klas platformy .NET można używać w programie PowerShell. Właściwości statyczne to właściwości klasy, w przeciwieństwie do właściwości standardowych, które są właściwościami obiektu.

Aby uzyskać właściwości statyczne klasy, użyj parametru Get-Member Static polecenia cmdlet. Na przykład następujące polecenie pobiera właściwości System.DateTime statyczne klasy.

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

Aby uzyskać wartość właściwości statycznej, użyj następującej składni.

[<ClassName>]::<Property>

Na przykład następujące polecenie pobiera wartość właściwości System.DateTime statycznej UtcNow klasy .

[System.DateTime]::UtcNow

Wyliczenie dostępu do składowych

Począwszy od programu PowerShell 3.0, gdy używasz operatora dostępu do składowej (.) w celu uzyskania dostępu do właściwości, która nie istnieje w kolekcji list, program PowerShell automatycznie wylicza elementy w kolekcji i zwraca wartość właściwości w każdym elemencie. Aby uzyskać więcej informacji, zobacz about_Member-Access_Enumeration.

Przykłady

To polecenie zwraca wartość właściwości DisplayName każdej zwracanej usługi Get-Service .

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

Wszystkie kolekcje mają właściwość Count , która zwraca liczbę obiektów w kolekcji.

(Get-Service).Count
176

Począwszy od programu PowerShell 3.0, można uzyskać właściwość Count lub Length obiektów pojedynczych, które nie są kolekcjami.

(Get-Service Audiosrv).Count
1

Jednak niektóre obiekty mają właściwość Length . Na przykład długość ciągu jest liczbą znaków w ciągu. Właściwość Count jest liczbą wystąpień obiektu.

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

Jeśli właściwość istnieje na poszczególnych obiektach i w kolekcji, zwracana jest tylko właściwość kolekcji.

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

Zobacz też