- 12/01/2017
- 5 perc olvasás
-
- S
- s
- q
Rövid leírás
Az objektumok tulajdonságainak használatát írja le a PowerShellben.
Hosszú leírás
A PowerShell objektumoknak nevezett strukturált információgyűjteményeket használ az adattárolók elemeinek vagy a számítógép állapotának ábrázolására. Általában a Microsoft .NET keretrendszer részét képező objektumokkal dolgozik, de egyéni objektumokat is létrehozhat a PowerShellben.
Az elem és az objektum közötti kapcsolat nagyon szoros. Amikor megváltoztat egy objektumot, általában az általa reprezentált elemet is megváltoztatja. Például, amikor a PowerShellben egy fájlt kap, nem a tényleges fájlt kapja meg. Ehelyett egy FileInfo objektumot kap, amely a fájlt reprezentálja. Ha megváltoztatja a FileInfo-objektumot, a fájl is megváltozik.
A legtöbb objektumnak vannak tulajdonságai. A tulajdonságok azok az adatok, amelyek egy objektumhoz kapcsolódnak. A különböző típusú objektumok különböző tulajdonságokkal rendelkeznek. Például aFileInfo-objektum, amely egy fájlt képvisel, rendelkezik egy IsReadOnly-tulajdonsággal, amely $True-t tartalmaz, ha a fájl csak olvasható attribútummal rendelkezik, és $False-t, ha nem.A DirectoryInfo-objektum, amely egy fájlrendszer könyvtárát képviseli, rendelkezik egy Parent-tulajdonsággal, amely a szülő könyvtár elérési útvonalát tartalmazza.
Object properties
Az objektum tulajdonságainak lekérdezéséhez használja a Get-Member
cmdletet. Például egy FileInfo objektum tulajdonságainak lekérdezéséhez használja a Get-ChildItem
cmdletet a fájlt reprezentáló FileInfo objektum lekérdezéséhez. Ezután egy csővezetékoperátorral (|) küldje el a FileInfo-objektumot a Get-Member
parancsba. A következő parancs megszerzi a PowerShell.exe fájlt, és elküldi a Get-Member
címre.A $Pshome automatikus változó tartalmazza a PowerShell-telepítési könyvtár elérési útvonalát.
Get-ChildItem $pshome\PowerShell.exe | Get-Member
A parancs kimenete felsorolja a FileInfo objektum tagjait.A tagok közé tartoznak a tulajdonságok és a metódusok is. Amikor a PowerShellben dolgozik, az objektumok összes tagjához hozzáférhet.
Az objektumnak csak a tulajdonságait, a metódusait nem kapja meg, használja a Get-Member
cmdletMemberType paraméterét a “property” értékkel, ahogy az a következő példában látható.
Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property
TypeName: System.IO.FileInfoName 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;}
A tulajdonságok megtalálása után felhasználhatja azokat a PowerShell-parancsaiban.
Tulajdonságértékek
Bár egy adott típus minden objektuma ugyanazokkal a tulajdonságokkal rendelkezik, a tulajdonságok értékei leírják az adott objektumot. Például mindenFileInfo-objektumnak van egy CreationTime-tulajdonsága, de ennek a tulajdonságnak az értékefájlonként eltérő.
Az objektum tulajdonságainak értékeit leggyakrabban a dot-módszerrel kaphatjuk meg. Írjon be egy hivatkozást az objektumra, például egy változót, amely tartalmazza az objektumot, vagy egy parancsot, amely megszerzi az objektumot. Ezután írjon be egy pontot (.)a tulajdonság neve után.
A következő parancs például megjeleníti a PowerShell.exe fájl CreationTimetulajdonságának értékét. A Get-ChildItem
parancs egyFileInfo objektumot ad vissza, amely a PowerShell.exe fájlt ábrázolja. A parancs zárójelben van, hogy a parancs végrehajtása még a tulajdonságok elérése előtt megtörténjen. A Get-ChildItem
parancsot egy pont és a CreationTime tulajdonság neve követi, az alábbiak szerint:
(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM
Egy objektumot egy változóba is menthet, majd a tulajdonságait a dot módszerrel is lekérdezheti, ahogy a következő példában látható:
$a = Get-ChildItem $pshome\PowerShell.exe$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM
Az objektum tulajdonságértékeinek megjelenítéséhez a Select-Object
és Format-List
parancsparancsokat is használhatja. A Select-Object
és a Format-List
parancsok mindegyike rendelkezik egyProperty paraméterrel. A Property paraméterrel egy vagy több tulajdonságot és azok értékét adhatja meg. Vagy használhatja a joker karaktert(*) az összes tulajdonság jelölésére.
A következő parancs például megjeleníti a PowerShell.exe fájl összes tulajdonságának értékét.
Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0\PowerShell.exePSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0PSChildName : PowerShell.exePSDrive : CPSProvider : Microsoft.PowerShell.Core\FileSystemPSIsContainer : FalseMode : -a----VersionInfo : File: C:\Windows\System32\WindowsPowerShell\ v1.0\PowerShell.exe InternalName: POWERSHELL OriginalFilename: PowerShell.EXE.MUI FileVersion: 10.0.16299.15 (WinBuild.160101.0800) FileDescription: Windows PowerShell Product: Microsoft Windows Operating System ProductVersion: 10.0.16299.15 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)BaseName : PowerShellTarget : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p owershell.exe}LinkType : HardLinkName : PowerShell.exeLength : 449024DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0Directory : C:\Windows\System32\WindowsPowerShell\v1.0IsReadOnly : FalseExists : TrueFullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exExtension : .exeCreationTime : 9/29/2017 6:43:19 AMCreationTimeUtc : 9/29/2017 1:43:19 PMLastAccessTime : 9/29/2017 6:43:19 AMLastAccessTimeUtc : 9/29/2017 1:43:19 PMLastWriteTime : 9/29/2017 6:43:19 AMLastWriteTimeUtc : 9/29/2017 1:43:19 PMAttributes : Archive
Statikus tulajdonságok
A .NET osztályok statikus tulajdonságait használhatja a PowerShellben. A statikustulajdonságok az osztály tulajdonságai, ellentétben a standard tulajdonságokkal, amelyek az objektum tulajdonságai.
Az osztály statikus tulajdonságainak lekérdezéséhez használja aGet-Member cmdlet Static paraméterét.
A következő parancs például aSystem.DateTime
osztály statikus tulajdonságait kéri le.
Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTimeName 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;}
A statikus tulajdonság értékének lekérdezéséhez használja a következő szintaxist.
::<Property>
A következő parancs például a System.DateTime
osztály UtcNow statikus tulajdonságának értékét kéri le.
::UtcNow
Skalár objektumok és gyűjtemények tulajdonságai
Egy adott típusú (“skalár”) objektum tulajdonságai gyakran különböznek az azonos típusú objektumok gyűjteményének tulajdonságaitól.Például minden szolgáltatásnak van DisplayName tulajdonsága, de a szolgáltatások gyűjteményének nincs DisplayName tulajdonsága.
A következő parancs lekérdezi az “Audiosrv” szolgáltatás DisplayName tulajdonságának értékét.
(Get-Service Audiosrv).DisplayName
Windows Audio
A PowerShell 3.0-tól kezdve a PowerShell megpróbálja megelőzni a skalár objektumok és a gyűjtemények eltérő tulajdonságaiból eredő szkriptelési hibákat. Ugyanez a parancs minden olyan szolgáltatás DisplayName tulajdonságának értékét adja vissza, amelyet a Get-Service
visszaad.
(Get-Service).DisplayName
Application ExperienceApplication Layer Gateway ServiceWindows All-User Install AgentApplication IdentityApplication Information...
Ha egy gyűjteményt küld el, de olyan tulajdonságot kér, amely csak egyetlen (“skalár”) objektumon létezik, a PowerShell a gyűjtemény minden objektumára vonatkozóan visszaadja a tulajdonság értékét.
Minden gyűjteménynek van egy Count tulajdonsága, amely visszaadja, hogy hány objektum van a gyűjteményben.
(Get-Service).Count
176
A PowerShell 3.0-tól kezdve, ha a Count vagy Length tulajdonságot nulla objektum vagy egy objektum esetében kéri, a PowerShell a megfelelő értéket adja vissza.
(Get-Service Audiosrv).Count
1
Ha a tulajdonság létezik az egyes objektumokon és a gyűjteményen is,csak a gyűjtemény tulajdonságát adja vissza.
$collection = @(@{length = "foo"}@{length = "bar"})# PowerShell returns the collection's Length.$collection.length