Om inbyggda medlemmar
Kort beskrivning
Innehåller information om PowerShells inbyggda medlemmar som är tillgängliga för alla PowerShell-objekt.
Detaljerad beskrivning
När objekt skapas lägger PowerShell till några "dolda" egenskaper och metoder för varje objekt. Dessa egenskaper och metoder kallas för inbyggda medlemmar. Dessa inbyggda medlemmar är normalt dolda från vyn. Dessa dolda medlemmar kan ses med hjälp av force-parametern för Get-Member.
Objektvyer
De inbyggda medlemmarna innehåller en uppsättning medlemsuppsättningsegenskaper som representerar en vy över objektet. Mer information om Medlemsuppsättningsegenskaper finns i PSMemberSet.
Alla PowerShell-objekt innehåller följande egenskaper.
psbase
psbase
MemberSet innehåller medlemmarna i basobjektet utan tillägg eller anpassning. Beroende på objekttypen är det antingen en .NET-instans som omsluts av en[psobject]
instans eller, om det inte finns någon omslutning, är det själva indataobjektet.psadapted
psadapted
MemberSet visar basobjektet plus de anpassade medlemmarna, om de finns. Anpassade medlemmar läggs till av ETS (Extended Type System).psextended
psextended
MemberSet visar bara de medlemmar som har lagts till av Types.ps1xml-filerna och cmdleten Add-Member. Alla objekt kan utökas vid körning med hjälp av cmdletenAdd-Member
.psobject
MemberSet
psobject
är en omfattande källa till reflektion för alla objekt som innehåller metoder, egenskaper och annan information om objektet.
Exempel
I det här exemplet $hash
är en hashtabell som innehåller information om en användare.
Force-parametern för visar de inbyggda medlemmarna i objektet.Get-Member
$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…
Att använda psobject
liknar att använda Get-Member
, men ger mer flexibilitet. Du kan till exempel räkna upp egenskaperna för ett objekt och deras värden.
$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
Jämför det med objektet som skapades genom att konvertera hashtabellen till en PSCustomObject.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Observera att nycklarna från hashtabellen har konverterats till egenskaper i PSCustomObject. De nya egenskaperna är nu en del av 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…
Typinformation
pstypenames
CodeProperty visar hierarkin för objekttyp i arvsordning. Exempel:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
Utdata börjar med den mest specifika objekttypen , System.IO.FileInfo
och fortsätter ned till den mest generiska typen, System.Object
.
Metoder
PowerShell lägger till två dolda metoder för alla PowerShell-objekt. Dessa metoder visas inte med hjälp av Get-Member -Force
kommandot eller tabbslutningen.
ForEach() och Where()
Metoderna ForEach()
och Where()
är tillgängliga för alla PowerShell-objekt.
De är dock mest användbara när du arbetar med samlingar. Mer information om hur du använder dessa metoder finns i about_Arrays.
Egenskaper
Egenskaperna Antal och Längd är tillgängliga för alla PowerShell-objekt, inte bara samlingar. Dessa liknar varandra men kan fungera olika beroende på datatyp. Till exempel är längden på en sträng antalet tecken i strängen. Egenskapen Count är antalet instanser av objektet.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Mer information om dessa egenskaper finns i about_Properties.
Skalära typer av matrisindexering
När ett objekt inte är en indexerad samling returneras själva objektet med hjälp av indexoperatorn för att komma åt det första elementet. Indexvärden utöver det första elementet returnerar $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Mer information finns i about_Operators.
New()-metod för typer
Från och med PowerShell 5.0 lägger PowerShell till en statisk New()
metod för alla .NET-typer. Följande exempel ger samma resultat.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Det går bättre att new()
använda metoden än att använda New-Object
.
Mer information finns i about_Classes.