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 powershell.exe
plik i wysyła go do Get-Member
pliku . 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 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 powershell.exe
CreationTime pliku. Polecenie Get-ChildItem
zwraca obiekt FileInfo reprezentujący powershell.exe file
obiekt . 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\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM
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\powershell.exe
$a.CreationTime
Saturday, June 5, 2021 7:07:00 AM
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-List
z 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 powershell.exe
pliku.
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
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