Despre proprietăți

  • 12/01/2017
  • 5 minute de citit
    • S
    • s
    • q

Descriere succintă

Descrisă modul de utilizare a proprietăților obiectelor în PowerShell.

Descriere lungă

PowerShell utilizează colecții structurate de informații numite obiecte pentru a reprezenta elementele din magazinele de date sau starea calculatorului. În mod obișnuit,lucrați cu obiecte care fac parte din Microsoft .NET Framework, dar puteți crea, de asemenea, obiecte personalizate în PowerShell.

Asociația dintre un element și obiectul său este foarte strânsă. Când modificați un obiect, de obicei modificați și elementul pe care îl reprezintă. De exemplu, atunci când obțineți un fișier în PowerShell, nu obțineți fișierul propriu-zis. În schimb, primiți un obiect FileInfo care reprezintă fișierul. Atunci când schimbați obiectul FileInfo, se schimbă și fișierul.

Majoritatea obiectelor au proprietăți. Proprietățile sunt datele care sunt asociate cuun obiect. Diferite tipuri de obiecte au proprietăți diferite. De exemplu, un obiectFileInfo, care reprezintă un fișier, are o proprietate IsReadOnly careconține $True dacă fișierul are atributul read-only și $False în caz contrar.Un obiect DirectoryInfo, care reprezintă un director de sistem de fișiere, are o proprietate Parent care conține calea către directorul părinte.

Proprietăți ale obiectelor

Pentru a obține proprietățile unui obiect, utilizați cmdlet-ul Get-Member. De exemplu,pentru a obține proprietățile unui obiect FileInfo, utilizați cmdletul Get-ChildItem pentru a obține obiectul FileInfo care reprezintă un fișier. Apoi, utilizați un pipelineoperator (|) pentru a trimite obiectul FileInfo la Get-Member. Următoarea comandă obține fișierul PowerShell.exe și îl trimite la Get-Member.Variabila automată $Pshome conține calea directorului de instalare PowerShellinstallation.

Get-ChildItem $pshome\PowerShell.exe | Get-Member

La ieșirea comenzii enumeră membrii obiectului FileInfo.Membrii includ atât proprietăți, cât și metode. Când lucrați în PowerShell, aveți acces la toți membrii obiectelor.

Pentru a obține numai proprietățile unui obiect și nu și metodele, utilizați parametrulMemberType al cmdletului Get-Member cu valoarea „property”, așa cum se arată în exemplul următor.

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;}

După ce găsiți proprietățile, le puteți folosi în comenzile PowerShell.

Valorile proprietăților

Deși fiecare obiect de un anumit tip are aceleași proprietăți, valorileacelor proprietăți descriu obiectul respectiv. De exemplu, fiecare obiectFileInfo are o proprietate CreationTime, dar valoarea acelei proprietăți diferă pentru fiecare fișier.

Cel mai comun mod de a obține valorile proprietăților unui obiect este de a utiliza metoda dot. Introduceți o referință la obiect, cum ar fi o variabilă careconține obiectul sau o comandă care obține obiectul. Apoi, tastați un punct (.)urmat de numele proprietății.

De exemplu, următoarea comandă afișează valoarea proprietății CreationTime a fișierului PowerShell.exe. Comanda Get-ChildItem returnează un obiectFileInfo care reprezintă fișierul PowerShell.exe. Comanda esteînchisă între paranteze pentru a se asigura că este executată înainte de a fi accesată orice proprietate. Comanda Get-ChildItem este urmată de un punct și de numele proprietății CreationTime, după cum urmează:

(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM

De asemenea, puteți salva un obiect într-o variabilă și apoi să obțineți proprietățile acestuia utilizând metoda punct, așa cum se arată în următorul exemplu:

$a = Get-ChildItem $pshome\PowerShell.exe$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

Puteți utiliza, de asemenea, cmdleturile Select-Object și Format-List pentru a afișa valorile proprietăților unui obiect. Select-Object și Format-List au fiecare un parametruProperty. Puteți utiliza parametrul Property pentru a specifica una sau mai multe proprietăți și valorile acestora. Sau, puteți utiliza caracterul wildcard(*) pentru a reprezenta toate proprietățile.

De exemplu, următoarea comandă afișează valorile tuturor proprietățilorfișierului PowerShell.exe.

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

Proprietăți statice

Puteți utiliza proprietățile statice ale claselor .NET în PowerShell. Proprietățile statice sunt proprietăți ale clasei, spre deosebire de proprietățile standard, care suntproprietăți ale unui obiect.

Pentru a obține proprietățile statice ale unei clase, utilizați parametrul Static al cmdletuluiGet-Member.

De exemplu, următoarea comandă obține proprietățile statice ale claseiSystem.DateTime.

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;}

Pentru a obține valoarea unei proprietăți statice, utilizați următoarea sintaxă.

::<Property>

De exemplu, următoarea comandă obține valoarea proprietății statice UtcNow a clasei System.DateTime.

::UtcNow

Proprietăți ale obiectelor scalare și ale colecțiilor

Proprietățile unui obiect („scalar”) de un anumit tip sunt adesea diferite de proprietățile unei colecții de obiecte de același tip.De exemplu, fiecare serviciu are ca proprietate DisplayName, dar o colecție de servicii nu are o proprietate DisplayName.

Comanda următoare obține valoarea proprietății DisplayName a serviciului „Audiosrv”.

(Get-Service Audiosrv).DisplayName
Windows Audio

Începând cu PowerShell 3.0, PowerShell încearcă să prevină erorile de scripting carerezultă din proprietățile diferite ale obiectelor scalare și ale colecțiilor. Aceeași comandă returnează valoarea proprietății DisplayName a fiecărui serviciu pe care îl returnează Get-Service.

(Get-Service).DisplayName
Application ExperienceApplication Layer Gateway ServiceWindows All-User Install AgentApplication IdentityApplication Information...

Când trimiteți o colecție, dar solicitați o proprietate care există numai pe obiecte unice („scalare”), PowerShell returnează valoarea acelei proprietățipentru fiecare obiect din colecție.

Toate colecțiile au o proprietate Count care returnează câte obiecte sunt în colecție.

(Get-Service).Count
176

Începând cu PowerShell 3.0, dacă solicitați proprietatea Count sau Length azero obiecte sau a unui singur obiect, PowerShell returnează valoarea corectă.

(Get-Service Audiosrv).Count
1

Dacă există o proprietate pe obiectele individuale și pe colecție,se returnează doar proprietatea colecției.

$collection = @(@{length = "foo"}@{length = "bar"})# PowerShell returns the collection's Length.$collection.length

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.