Sdílet prostřednictvím


about_Properties

Krátký popis

Popisuje, jak používat vlastnosti objektu v PowerShellu.

Dlouhý popis

PowerShell používá strukturované kolekce informací označovaných jako objekty k reprezentaci položek v úložištích dat nebo stavu počítače. Obvykle pracujete s objekty, které jsou součástí rozhraní Microsoft .NET Framework, ale můžete také vytvářet vlastní objekty v PowerShellu.

Přidružení mezi položkou a jeho objektem je velmi blízko. Při změně objektu obvykle změníte položku, kterou představuje. Když například získáte soubor v PowerShellu, skutečný soubor se nezobrazí. Místo toho získáte FileInfo objekt, který představuje soubor. Když změníte FileInfo objekt, soubor se také změní.

Většina objektů má vlastnosti. Vlastnosti jsou data přidružená k objektu. Různé typy objektů mají různé vlastnosti. Například FileInfo objekt, který představuje soubor, má IsReadOnly vlastnost, která obsahuje $True , pokud soubor má atribut jen pro čtení a $False pokud ne. Objekt DirectoryInfo, který představuje adresář systému souborů, má nadřazenou vlastnost, která obsahuje cestu k nadřazené adresáři.

Vlastnosti objektu

K získání vlastností objektu použijte rutinu Get-Member . Chcete-li například získat vlastnosti FileInfo objektu, použijte rutinu Get-ChildItem k získání FileInfo objektu, který představuje soubor. Pak pomocí operátoru kanálu (|) odeslat FileInfo objektu do Get-Member. Následující příkaz načte pwsh.exe soubor a odešle ho do Get-Membersouboru . Automatická $PSHOME proměnná obsahuje cestu instalačního adresáře PowerShellu.

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

Výstup příkazu vypíše členy FileInfo objektu. Členy zahrnují vlastnosti i metody. Při práci v PowerShellu máte přístup ke všem členům objektů.

Chcete-li získat pouze vlastnosti objektu a nikoli metody, použijte parametr MemberTypeGet-Member rutiny s hodnotou Property, jak je znázorněno v následujícím příkladu.

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 nalezení vlastností je můžete použít v příkazech PowerShellu.

Hodnoty vlastností

I když každý objekt konkrétního typu má stejné vlastnosti, hodnoty těchto vlastností popisují konkrétní objekt. Například každý FileInfo objekt má CreationTime vlastnost, ale hodnota této vlastnosti se liší pro každý soubor.

Nejběžnější způsob, jak získat hodnoty vlastností objektu, je použít přístupový operátor člena (.). Zadejte odkaz na objekt, například proměnnou, která objekt obsahuje, nebo příkaz, který objekt získá. Potom zadejte operátor (.) následovaný názvem vlastnosti.

Například následující příkaz zobrazí hodnotu Vlastnosti CreationTimepwsh.exe souboru. Příkaz Get-ChildItem vrátí FileInfo. Příkaz je uzavřen v závorkách, aby se zajistilo, že se spustí před přístupem k jakýmkoli vlastnostem.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Objekt můžete také uložit do proměnné a pak získat jeho vlastnosti pomocí metody přístupu člena (.), jak je znázorněno v následujícím příkladu:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Wednesday, November 13, 2024 10:12:26 PM

K zobrazení hodnot vlastností objektu můžete použít Select-ObjectFormat-List také rutiny. Select-Object a Format-List každý z nich má parametr Vlastnosti . Pomocí parametru Property můžete zadat jednu nebo více vlastností a jejich hodnoty. Nebo můžete použít zástupný znak (*) k reprezentaci všech vlastností.

Například následující příkaz zobrazí hodnoty všech vlastností souboru pwsh.exe.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7-preview\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.5.0.101
                      FileDescription:  PowerShell 7
                      Product:          PowerShell
                      ProductVersion:   7.5.0-rc.1 SHA: c0142dde17137e436e302b3c4e93e2d6dc50c5c4+c0142dde17137e436e302b3c4e93e2d6dc50c5c4
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral
                      
BaseName            : pwsh
ResolvedTarget      : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target              : 
LinkType            : 
Name                : pwsh.exe
Length              : 284704
DirectoryName       : C:\Program Files\PowerShell\7-preview
Directory           : C:\Program Files\PowerShell\7-preview
IsReadOnly          : False
Exists              : True
FullName            : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension           : .exe
CreationTime        : 11/13/2024 10:12:26 PM
CreationTimeUtc     : 11/14/2024 4:12:26 AM
LastAccessTime      : 1/3/2025 1:38:13 PM
LastAccessTimeUtc   : 1/3/2025 7:38:13 PM
LastWriteTime       : 11/13/2024 10:12:26 PM
LastWriteTimeUtc    : 11/14/2024 4:12:26 AM
LinkTarget          : 
UnixFileMode        : -1
Attributes          : Archive

Statické vlastnosti

V PowerShellu můžete použít statické vlastnosti tříd .NET. Statické vlastnosti jsou vlastnosti třídy, na rozdíl od standardních vlastností, které jsou vlastnostmi objektu.

Pokud chcete získat statické vlastnosti třídy, použijte statický parametr rutiny Get-Member . Například následující příkaz získá statické vlastnosti System.DateTime třídy.

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

Pokud chcete získat hodnotu statické vlastnosti, použijte následující syntaxi.

[<ClassName>]::<Property>

Například následující příkaz získá hodnotu třídy.

[System.DateTime]::UtcNow

Výčet přístupu členů

Počínaje verzí PowerShell 3.0, při použití operátoru přístupu k členovi (.) pro přístup k neexistující vlastnosti PowerShell automaticky provede výčet položek v kolekci a vrátí hodnotu této vlastnosti pro každou položku.

Tento příkaz vrátí hodnotu Vlastnosti DisplayName každé služby, která Get-Service vrací.

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

Většina kolekcí v PowerShellu má vlastnost Count, která vrací počet položek v kolekci.

(Get-Service).Count
176

Pokud vlastnost existuje u jednotlivých objektů a v kolekci, vrátí se pouze vlastnost kolekce.

PS> $collection = @(
     [pscustomobject]@{Length = "foo"}
     [pscustomobject]@{Length = "bar"}
)

# PowerShell returns the collection's Length.
$collection.Length
2

# Get the length property of each item in the collection.
PS> $collection.GetEnumerator().Length
foo
bar

Další informace najdete v tématu about_Member-Access_Enumeration.

Viz také