Udostępnij za pośrednictwem


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 stanie komputera. Zazwyczaj pracujesz z obiektem należącym do 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 otrzymasz rzeczywistego pliku. Zamiast tego uzyskasz obiekt FileInfo reprezentujący plik. Po zmianie obiektu FileInfo plik również się zmienia.

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 atrybutu 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 obiektu 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ą konkretny 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ę (.), po której następuje nazwa 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 jest wykonywane przed uzyskaniem dostępu do wszystkich 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żesz również zapisać obiekt w zmiennej, a następnie pobrać jego właściwości przy użyciu metody kropkowej, jak pokazano w poniższym przykładzie:

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

Można również użyć poleceń Select-Object cmdlet i Format-List do wyświetlania wartości właściwości obiektu. Select-Object każdy Format-List z nich ma parametr Property . Możesz użyć parametru Property , aby określić co najmniej jedną właściwość i ich wartości. Możesz też użyć symbolu wieloznakowego (*) 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 statyczne 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 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

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

Właściwości jednego obiektu ("skalarnego") 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ść 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 usługi, która Get-Service zwraca.

(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 przypadku pojedynczych obiektów ("skalarnych"), 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 w kolekcji.

(Get-Service).Count
176

Począwszy od programu PowerShell 3.0, jeśli zażądasz właściwości Count lub Length obiektu zero lub jednego obiektu, program PowerShell zwróci 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 też

about_Methods

about_Objects

Get-Member

Select-Object

Format-List