Sdílet prostřednictvím


o_vlastnostech

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 prostředí PowerShell.

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 prostředí PowerShell, nezískáte skutečný soubor. Místo toho získáte objekt FileInfo, který představuje soubor. Když změníte FileInfo objekt, soubor se také změní.

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

Vlastnosti objektu

K získání vlastností objektu použijte rutinu Get-Member. Chcete-li například získat vlastnosti objektu FileInfo, použijte rutinu Get-ChildItem k získání objektu FileInfo, který představuje soubor. Poté pomocí operátoru kanálu (|) odešlete objekt FileInfo do Get-Member. Následující příkaz získá soubor PowerShell.exe a odešle jej do Get-Member. Proměnná $Pshome automatic obsahuje cestu k instalačnímu adresáři PowerShellu.

Get-ChildItem $pshome\PowerShell.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 ne metody, použijte parametr MemberType rutiny Get-Member s hodnotou "property", jak je znázorněno v následujícím příkladu.

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

Hodnoty nemovitostí

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

Nejběžnějším způsobem, jak získat hodnoty vlastností objektu, je použití metody dot. Zadejte odkaz na objekt, například proměnnou, která objekt obsahuje, nebo příkaz, který objekt získá. Poté zadejte tečku (.) následovanou názvem vlastnosti.

Následující příkaz například zobrazí hodnotu vlastnosti CreationTime souboru PowerShell.exe. Příkaz Get-ChildItem vrátí objekt FileInfo, který představuje soubor PowerShell.exe. Příkaz je uzavřen v závorkách, aby bylo zajištěno, že bude proveden před přístupem k jakýmkoli vlastnostem. Za Get-ChildItem příkazem následuje tečka a název vlastnosti CreationTime, a to následujícím způsobem:

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

Můžete také uložit objekt do proměnné a poté získat jeho vlastnosti pomocí metody tečky, jak je znázorněno v následujícím příkladu:

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

K zobrazení hodnot vlastností objektu můžete použít také rutiny Select-Object a Format-List. Select-Object a Format-List mají každý parametr vlastnost. K určení jedné nebo více vlastností a jejich hodnot můžete použít parametr Vlastnost. Nebo můžete použít zástupný znak (*) k reprezentaci všech vlastností.

Následující příkaz například zobrazí hodnoty všech vlastností souboru 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

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.

Chcete-li získat statické vlastnosti třídy, použijte parametr Static 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 statické vlastnosti UtcNow třídy System.DateTime .

[System.DateTime]::UtcNow

Výčet přístupu členů

Když od PowerShellu 3.0 použijete operátor přístupu člena (.) pro přístup k vlastnosti, která neexistuje v kolekci seznamu, PowerShell automaticky vytvoří výčet položek v kolekci a vrátí hodnotu vlastnosti u každé položky. Další informace najdete v tématu about_Member-Access_Enumeration.

Příklady

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

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

Všechny kolekce mají vlastnost Count , která vrací, kolik objektů je v kolekci.

(Get-Service).Count
176

Pokud od PowerShellu 3.0 požádáte o vlastnost Count nebo Length nulového objektu nebo jednoho objektu, PowerShell vrátí správnou hodnotu.

(Get-Service Audiosrv).Count
1

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

$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2

Viz také