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 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.
Varje 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 omsluten 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
psobject
MemberSet är en omfattande reflektionskälla för alla objekt som innehåller metoder, egenskaper och annan information om objektet.
Exempel
I det här exemplet $hash
är en hashtable som innehåller information om en användare.
Force-parametern Get-Member
för visar oss de inbyggda medlemmarna i objektet.
$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…
Skriv information
pstypenames
CodeProperty visar en lista över objekttypshierarkin i arvsordning. Till 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 för 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.