Informace o vnitřních členech
Krátký popis
Poskytuje informace o vnitřních členech PowerShellu, které jsou k dispozici pro všechny objekty PowerShellu.
Podrobný popis
Při vytváření objektů přidá PowerShell do každého objektu některé "skryté" vlastnosti a metody. Tyto vlastnosti a metody se označují jako vnitřní členy. Tyto vnitřní členy jsou obvykle skryté v zobrazení. Tyto skryté členy lze zobrazit pomocí parametru Force funkce Get-Member.
Zobrazení objektů
Vnitřní členy zahrnují sadu vlastností MemberSet , které představují zobrazení objektu. Další informace o vlastnostech MemberSet naleznete v tématu PSMemberSet.
Každý objekt PowerShellu obsahuje následující vlastnosti.
psbase
MemberSet
psbase
obsahuje členy základního objektu bez rozšíření nebo přizpůsobení. V závislosti na typu objektu je to buď instance .NET zabalená[psobject]
instancí, nebo pokud neexistuje obálka, jedná se o samotný vstupní objekt.psadapted
ČlenSet
psadapted
zobrazuje základní objekt plus upravené členy, pokud je k dispozici. Upravené členy jsou přidány rozšířeným typem systému (ETS).psextended
Sada
psextended
MemberSet zobrazuje pouze členy přidané soubory Types.ps1xml a rutina Add-Member . Pomocí rutinyAdd-Member
je možné rozšířit libovolný objekt za běhu.psobject
MemberSet
psobject
bohatý zdroj reflexe pro libovolný objekt, který obsahuje metody, vlastnosti a další informace o objektu.
Příklady
V tomto příkladu $hash
je hashovací tabulka obsahující informace o uživateli.
Parametr Force Get-Member
ukazuje vnitřní členy objektu.
$hash = @{
Age = 33
Name = 'Bob'
}
$hash | Get-Member -Force -MemberType MemberSet, CodeProperty
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted MemberSet psadapted {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add,…
psbase MemberSet psbase {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add, Cl…
psextended MemberSet psextended {}
psobject MemberSet psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…
Použití psobject
se podobá použití Get-Member
, ale poskytuje větší flexibilitu. Můžete například vytvořit výčet vlastností objektu a jejich hodnot.
$hash.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
IsReadOnly Property False
IsFixedSize Property False
IsSynchronized Property False
Keys Property {Age, Name}
Values Property {33, Bob}
SyncRoot Property {[Age, 33], [Name, Bob]}
Count Property 2
Porovnejte to s objektem vytvořeným převodem hashtable na PSCustomObject.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Všimněte si, že klíče z hashtable byly převedeny na vlastnosti v PSCustomObject. Nové vlastnosti jsou nyní součástí psextended
MemberSet.
$user | Get-Member -Force -MemberType MemberSet, CodeProperty
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted MemberSet psadapted {ToString, GetType, Equals, GetHashCode}
psbase MemberSet psbase {ToString, GetType, Equals, GetHashCode}
psextended MemberSet psextended {Age, Name}
psobject MemberSet psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…
Informace o typu
pstypenames
CodeProperty uvádí hierarchii typů objektů v pořadí dědičnosti. Příklad:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
Výstup začíná nejtypičtějším typem System.IO.FileInfo
objektu a pokračuje až k nejogeneričtějšímu typu System.Object
.
Metody
PowerShell přidá ke všem objektům PowerShellu dvě skryté metody. Tyto metody nejsou viditelné pomocí příkazu nebo dokončování tabulátoru Get-Member -Force
.
ForEach() a Where()
Všechny objekty PowerShellu ForEach()
jsou k dispozici a Where()
metody.
Jsou ale nejužitečnější při práci s kolekcemi. Další informace o tom, jak tyto metody používat, najdete v tématu about_Arrays.
Vlastnosti
Vlastnosti Count a Length jsou k dispozici pro všechny objekty PowerShellu, nejen pro kolekce. Jsou podobné sobě, ale v závislosti na datovém typu můžou fungovat odlišně. 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
Další informace o těchto vlastnostech najdete v tématu about_Properties.
Skalární typy indexování polí
Pokud objekt není indexovanou kolekcí, vrátí použití operátoru indexu pro přístup k prvnímu prvku samotný objekt. Hodnoty indexu nad rámec prvního prvku vrátí $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Další informace najdete v tématu about_Operators.
Metoda New() pro typy
Počínaje PowerShellem 5.0 přidá PowerShell statickou New()
metodu pro všechny typy .NET. Následující příklady vytvoří stejný výsledek.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Použití metody new()
funguje lépe než použití New-Object
.
Další informace najdete v tématu about_Classes.