Sdílet prostřednictvím


O vlastnostech

Krátký popis

Popisuje, jak používat vlastnosti objektů v prostředí PowerShell.

Dlouhý popis

Prostředí PowerShell používá strukturované kolekce informací označované jako objekty, které reprezentují položky v úložištích dat nebo stavu počítače. Obvykle pracujete s objektem, který je součástí Microsoft .NET Framework, ale můžete také vytvořit vlastní objekty v prostředí PowerShell.

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

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

Vlastnosti objektu

Chcete-li získat vlastnosti objektu, použijte Get-Member rutinu. Například pro získání vlastností objektu FileInfo použijte Get-ChildItem rutinu k získání objektu FileInfo, který představuje soubor. Pak použijte operátor kanálu (|) k odeslání objektu FileInfo do Get-Member . Následující příkaz získá soubor PowerShell.exe a odešle ho do Get-Member . $Automatická proměnná pshome obsahuje cestu k instalačnímu adresáři prostředí PowerShell.

Get-ChildItem $pshome\PowerShell.exe | Get-Member

Výstup příkazu vypíše seznam členů objektu FileInfo . Členové zahrnují vlastnosti i metody. Když pracujete v prostředí PowerShell, máte přístup ke všem členům objektů.

Chcete-li získat pouze vlastnosti objektu a nikoli metody, použijte parametr MemberType Get-Member rutiny 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 ve svých příkazech PowerShellu.

Hodnoty vlastností

I když všechny objekty určitého typu mají stejné vlastnosti, hodnoty těchto vlastností popisují příslušný objekt. Například každý objekt FileInfo má vlastnost CreationTime, ale hodnota této vlastnosti se u každého souboru liší.

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

Například následující příkaz zobrazí hodnotu vlastnosti CreationTime souboru PowerShell.exe. Get-ChildItemPříkaz vrátí objekt FileInfo, který představuje soubor PowerShell.exe. Příkaz je uzavřený v závorkách, aby se zajistilo, že se spustí před tím, než budou k dispozici vlastnosti. Get-ChildItemPříkaz je následován tečkou a názvem vlastnosti CreationTime, jak je znázorněno níže:

(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čka, 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

Pomocí rutin a můžete také Select-Object Format-List Zobrazit hodnoty vlastností objektu. Select-Objecta 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 ( * ) pro reprezentaci všech vlastností.

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

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í, což jsou vlastnosti objektu.

Pro získání statických vlastností 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;}

Chcete-li 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 System.DateTime třídy.

[System.DateTime]::UtcNow

Vlastnosti skalárních objektů a kolekcí

Vlastnosti jednoho ("skalárního") objektu určitého typu jsou často odlišné od vlastností kolekce objektů stejného typu. Například každá služba má jako vlastnost DisplayName , ale kolekce služeb nemá vlastnost DisplayName .

Následující příkaz Získá hodnotu vlastnosti DisplayName služby ' AudioSrv '.

(Get-Service Audiosrv).DisplayName
Windows Audio

Počínaje PowerShellem 3,0 se PowerShell pokusí zabránit chybám skriptování, které jsou výsledkem různých vlastností skalárních objektů a kolekcí. Stejný 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
...

Když zadáte kolekci, ale vyžádáte vlastnost, která existuje pouze pro jednotlivé (skalární) objekty, PowerShell vrátí hodnotu této vlastnosti pro každý objekt v kolekci.

Všechny kolekce mají vlastnost Count , která vrací počet objektů v kolekci.

(Get-Service).Count
176

Když v PowerShellu 3,0 vyžádáte vlastnost Count nebo Length nula objektů nebo jeden objekt, PowerShell vrátí správnou hodnotu.

(Get-Service Audiosrv).Count
1

Pokud vlastnost existuje u jednotlivých objektů a v kolekci, je vrácena pouze vlastnost kolekce.

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

Tato funkce funguje také na metodách skalárních objektů a kolekcí. Další informace najdete v tématu about_Methods.

Viz také

about_Methods

about_Objects

Get – člen

Select-Object

Format-List