Udostępnij przez


Informacje o właściwościach

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ą Microsoft .NET Framework, ale możesz 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 zostanie pobrany rzeczywisty plik. Zamiast tego otrzymasz 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 jest atrybutem tylko do odczytu, a $False, jeśli tak nie jest. 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 polecenia cmdlet Get-Member. Aby na przykład uzyskać właściwości obiektu FileInfo, użyj polecenia cmdlet Get-ChildItem, 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 plik PowerShell.exe i wysyła go do Get-Member. Zmienna automatyczna $Pshome zawiera ścieżkę katalogu instalacyjnego programu PowerShell.

Get-ChildItem $pshome\PowerShell.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\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;}

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 metody kropki. Wpisz odwołanie do obiektu, takie jak zmienna zawierająca obiekt lub polecenie, które pobiera obiekt. Następnie wpisz kropkę (.), a następnie nazwę właściwości.

Na przykład następujące polecenie wyświetla wartość właściwości CreationTime pliku PowerShell.exe. Polecenie Get-ChildItem zwraca obiekt FileInfo reprezentujący plik PowerShell.exe. Polecenie jest ujęte w nawiasy, aby upewnić się, że zostało wykonane przed uzyskaniem dostępu do jakichkolwiek właściwości. Po Get-ChildItem poleceniu następuje kropka i nazwa właściwości CreationTime w następujący sposób:

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

Można również zapisać obiekt w zmiennej, a następnie pobrać jego właściwości przy użyciu metody kropki, jak pokazano w poniższym przykładzie:

$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

Możesz również użyć poleceń cmdlet Select-Object i Format-List, aby wyświetlić wartości właściwości obiektu. Select-Object i Format-List każdy ma parametr właściwości . Możesz użyć parametru właściwości, aby określić co najmniej jedną właściwość i ich wartości. Można też użyć symbolu wieloznacznego (*) do reprezentowania wszystkich właściwości.

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

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

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 Static polecenia cmdlet Get-Member.

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

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

Właściwości obiektów skalarnych i kolekcji

Właściwości jednego ("skalarnego") obiektu określonego typu często różnią się od właściwości kolekcji obiektów tego samego typu. Na przykład każda usługa ma właściwość as DisplayName , ale kolekcja usług nie ma właściwości DisplayName .

Następujące polecenie pobiera wartość właściwości DisplayName usługi "Audiosrv".

(Get-Service Audiosrv).DisplayName
Windows Audio

Począwszy od programu PowerShell 3.0, program PowerShell próbuje zapobiec błędom skryptów, które wynikają z różnych właściwości obiektów skalarnych i kolekcji. To samo 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
...

Gdy przesyłasz kolekcję, ale żądasz właściwości, która istnieje tylko w pojedynczych ("skalarnych") obiektach, program PowerShell zwraca wartość tej właściwości dla każdego obiektu w kolekcji.

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

(Get-Service).Count
176

Począwszy od programu PowerShell 3.0, jeśli zażądasz właściwości Count lub Length zera obiektów lub jednego obiektu, program PowerShell zwraca poprawną wartość.

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

Ta funkcja działa również na metodach obiektów skalarnych i kolekcji. Aby uzyskać więcej informacji, zobacz about_Methods.

Zobacz także

o_metodach

about_Objects

get-member

select-object

Lista formatów