Tudnivalók a belső tagokról
Rövid leírás
Információkat nyújt a PowerShell belső tagjairól, amelyek minden PowerShell-objektum számára elérhetők.
Részletes leírás
Objektumok létrehozásakor a PowerShell minden objektumhoz hozzáad néhány "rejtett" tulajdonságot és metódust. Ezeket a tulajdonságokat és metódusokat belső tagoknak nevezzük. Ezek a belső tagok általában rejtettek a nézet elől. Ezek a rejtett tagok a Get-Member Force paraméterrel láthatók.
Objektumnézetek
A belső tagok olyan MemberSet-tulajdonságokat tartalmaznak, amelyek az objektum nézetét képviselik. További információ a MemberSet tulajdonságairól: PSMemberSet.
Minden PowerShell-objektum a következő tulajdonságokat tartalmazza.
psbase
A
psbase
MemberSet az alapobjektum tagjait tartalmazza kiterjesztés vagy átalakítás nélkül. Az objektum típusától függően egy példány által[psobject]
burkolt .NET-példány, vagy ha nincs burkoló, akkor maga a bemeneti objektum.psadapted
A
psadapted
MemberSet az alapobjektumot és az adaptált tagokat jeleníti meg, ha vannak ilyenek. Az adaptált tagokat a kiterjesztett típusrendszer (ETS) adja hozzá.psextended
A
psextended
MemberSetcsak a Types.ps1xml fájlok és a Tag hozzáadása parancsmag által hozzáadott tagokat jeleníti meg. A parancsmag használatávalAdd-Member
bármely objektum bővíthető futásidőben.psobject
A
psobject
MemberSet egy gazdag tükröződési forrás minden olyan objektumhoz, amely metódusokat, tulajdonságokat és az objektummal kapcsolatos egyéb információkat tartalmaz.
Példák
Ebben a példában $hash
egy felhasználóval kapcsolatos információkat tartalmazó kivonatoló.
A Force paraméter Get-Member
az objektum belső tagjait mutatja.
$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…
A használat psobject
hasonló a használathoz Get-Member
, de nagyobb rugalmasságot biztosít. Számba vehet például egy objektum tulajdonságait és értékeit.
$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
Hasonlítsa össze a kivonatoló PSCustomObjectre konvertálásával létrehozott objektummal.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Figyelje meg, hogy a kivonatoló kulcsai a PSCustomObject tulajdonságává lettek konvertálva. Az új tulajdonságok mostantól a psextended
MemberSet részét képezik.
$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…
Típusadatok
A pstypenames
CodeProperty az objektumtípus-hierarchiát az öröklés sorrendjében sorolja fel. Példa:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
A kimenet a legspecifikusabb objektumtípussal kezdődik, System.IO.FileInfo
és a leggenerikusabb típusra folytatódik. System.Object
Metódusok
A PowerShell két rejtett metódust ad hozzá az összes PowerShell-objektumhoz. Ezek a metódusok nem láthatók a parancs vagy a Get-Member -Force
lapkizárás használatával.
ForEach() és Where()
A ForEach()
metódusok és Where()
a metódusok minden PowerShell-objektum számára elérhetők.
A gyűjtemények használatakor azonban ezek a leg hasznosak. A metódusok használatáról további információt a about_Arrays talál.
Tulajdonságok
A Darabszám és a Hossz tulajdonság nem csak gyűjteményekben, hanem minden PowerShell-objektumban elérhető. Ezek hasonlóak egymáshoz, de az adattípustól függően eltérően működhetnek. Egy sztring hossza például a sztringben szereplő karakterek száma. A Count tulajdonság az objektum példányainak száma.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
További információ ezekről a tulajdonságokról: about_Properties.
Tömbindexelési skaláris típusok
Ha egy objektum nem indexelt gyűjtemény, az index operátorral az első elemhez való hozzáféréssel magát az objektumot adja vissza. Az első elemen túli indexértékek visszaadják $null
az értéket.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
További információ: about_Operators.
New() metódus típusokhoz
A PowerShell 5.0-tól kezdve minden .NET-típushoz hozzáad egy statikus New()
metódust. Az alábbi példák ugyanazt az eredményt eredményezik.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
new()
A metódus használata jobban teljesít, mint a használataNew-Object
.
További információ: about_Classes.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: