Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 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 přidružená 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 má atribut jen pro čtení a $False, pokud ne. Objekt DirectoryInfo, který představuje adresář systému souborů, má vlastnost Parent, 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 objektu FileInfo, použijte rutinu Get-ChildItem k získání objektu FileInfo, který představuje soubor. Potom pomocí operátoru kanálu (|) odešlete objekt FileInfo do Get-Member. Následující příkaz získá soubor pwsh.exe a odešle ho do Get-Member. Automatická proměnná $PSHOME 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ů.
Pokud chcete 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\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 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ý FileInfo objekt 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í přístupového operátoru č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 CreationTime souboru pwsh.exe. Příkaz Get-ChildItem vrátí objekt FileInfo, který představuje pwsh.exe file. 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řístup členů (.), jak je znázorněno v následujícím příkladu:
$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM
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í.
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\pwsh.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7
PSChildName : pwsh.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -a---
ModeWithoutHardLink : -a---
VersionInfo : File: C:\Program Files\PowerShell\7\pwsh.exe
InternalName: pwsh.dll
OriginalFilename: pwsh.dll
FileVersion: 7.3.9.500
FileDescription: pwsh
Product: PowerShell
ProductVersion: 7.3.9 SHA: 116d193ed28dcc6914653c799846bbf379cea0fb
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: Language Neutral
BaseName : pwsh
ResolvedTarget : C:\Program Files\PowerShell\7\pwsh.exe
Target :
LinkType :
Length : 293312
DirectoryName : C:\Program Files\PowerShell\7
Directory : C:\Program Files\PowerShell\7
IsReadOnly : False
FullName : C:\Program Files\PowerShell\7\pwsh.exe
Extension : .exe
Name : pwsh.exe
Exists : True
CreationTime : 10/25/2023 7:00:18 PM
CreationTimeUtc : 10/26/2023 12:00:18 AM
LastAccessTime : 11/14/2023 5:14:36 PM
LastAccessTimeUtc : 11/14/2023 11:14:36 PM
LastWriteTime : 10/25/2023 7:00:18 PM
LastWriteTimeUtc : 10/26/2023 12:00:18 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 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 UtcNow static vlastnost System.DateTime třídy.
[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 seznamů, 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í počet objektů v kolekci.
(Get-Service).Count
176
Počínaje PowerShellem 3.0 můžete získat vlastnost Count nebo Length jednoúčelových objektů, které nejsou kolekcemi.
(Get-Service Audiosrv).Count
1
Některé objekty však mají vlastnost Length . Například Délka řetězce je počet znaků v řetězci. Vlastnost Count je počet instancí objektu.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.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