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.