About Properties

  • 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

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.