About Properties

  • 12/01/2017
  • 5 minuten om te lezen
    • S
    • s
    • q

Korte beschrijving

Beschrijft hoe objecteigenschappen in PowerShell gebruikt kunnen worden.

Lange beschrijving

PowerShell gebruikt gestructureerde verzamelingen informatie, objecten genaamd, om de items in gegevensbestanden of de toestand van de computer weer te geven. Meestal werkt u met objecten die deel uitmaken van het Microsoft .NET Framework, maar u kunt ook aangepaste objecten maken in PowerShell.

De associatie tussen een item en zijn object is zeer nauw. Wanneer u een object wijzigt, wijzigt u meestal ook het item dat het vertegenwoordigt. Wanneer u bijvoorbeeld een bestand in PowerShell krijgt, krijgt u niet het eigenlijke bestand. In plaats daarvan krijg je een FileInfo object dat het bestand vertegenwoordigt. Wanneer u het FileInfoobject wijzigt, verandert het bestand ook.

De meeste objecten hebben eigenschappen. Eigenschappen zijn de gegevens die zijn gekoppeld aan een object. Verschillende soorten objecten hebben verschillende eigenschappen. Bijvoorbeeld, eenFileInfo object, dat een bestand vertegenwoordigt, heeft een IsReadOnly eigenschap die $True bevat indien het bestand de alleen-lezen eigenschap heeft en $False indien dit niet het geval is.Een DirectoryInfo object, dat een bestandssysteem directory vertegenwoordigt, heeft een Parent eigenschap die het pad naar de bovenliggende directory bevat.

Object eigenschappen

Om de eigenschappen van een object op te vragen, gebruikt u het Get-Member cmdlet. Om bijvoorbeeld de eigenschappen van een FileInfo object op te vragen, gebruikt u het cmdlet Get-ChildItem om het FileInfo object op te vragen dat een bestand vertegenwoordigt. Gebruik dan een pipelineoperator (|) om het FileInfo object naar Get-Member te sturen. De volgende opdracht haalt het bestand PowerShell.exe op en stuurt het naar Get-Member.De automatische variabele $Pshome bevat het pad van de PowerShel-installatiedirectory.

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

De uitvoer van de opdracht vermeldt de leden van het object FileInfo.Leden omvatten zowel eigenschappen als methoden. Wanneer u in PowerShell werkt, hebt u toegang tot alle leden van de objecten.

Om alleen de eigenschappen van een object te krijgen en niet de methoden, gebruikt u de parameterMemberType van het cmdlet Get-Member met een waarde van “property”, zoals in het volgende voorbeeld.

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

Nadat u de eigenschappen hebt gevonden, kunt u deze gebruiken in uw PowerShell-opdrachten.

Eigenschap waarden

Hoewel elk object van een bepaald type dezelfde eigenschappen heeft, beschrijven de waarden van deze eigenschappen het specifieke object. ElkFileInfo -object heeft bijvoorbeeld een eigenschap CreationTime, maar de waarde van die eigenschap verschilt voor elk bestand.

De meest gebruikelijke manier om de waarden van de eigenschappen van een object te verkrijgen, is door gebruik te maken van de methode dot. Typ een verwijzing naar het object, zoals een variabele die het object bevat, of een commando dat het object verkrijgt. Typ vervolgens een punt (.) gevolgd door de naam van de eigenschap.

De volgende opdracht geeft bijvoorbeeld de waarde van de eigenschap CreationTimeproperty van het PowerShell.exe-bestand weer. De opdracht Get-ChildItem geeft een objectFileInfo terug dat het bestand PowerShell.exe weergeeft. De opdracht wordt tussen haakjes geplaatst om ervoor te zorgen dat deze wordt uitgevoerd voordat eigenschappen worden geopend. De Get-ChildItem opdracht wordt gevolgd door een punt en de naam van de CreationTime eigenschap, als volgt:

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

U kunt ook een object in een variabele opslaan en dan de eigenschappen ervan opvragen door de punt methode te gebruiken, zoals in het volgende voorbeeld:

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

U kunt ook de Select-Object en Format-List cmdlets gebruiken om de eigenschap waarden van een object weer te geven. Select-Object en Format-List hebben elk eenProperty parameter. U kunt de Property parameter gebruiken om een of meer eigenschappen en hun waarden op te geven. U kunt ook het jokerteken (*) gebruiken om alle eigenschappen weer te geven.

Het volgende commando geeft bijvoorbeeld de waarden weer van alle eigenschappen van het PowerShell.exe bestand.

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

Static properties

U kunt de statische eigenschappen van .NET klassen gebruiken in PowerShell. Statische eigenschappen zijn eigenschappen van een klasse, in tegenstelling tot standaardeigenschappen, die eigenschappen van een object zijn.

Om de statische eigenschappen van een klasse op te vragen, gebruikt u de parameter Static van het cmdletGet-Member.

Het volgende commando haalt bijvoorbeeld de statische eigenschappen op van de klasseSystem.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;}

Om de waarde van een statische eigenschap op te vragen, gebruikt u de volgende syntaxis.

::<Property>

Voorbeeld, het volgende commando vraagt de waarde op van de statische eigenschap UtcNow van de klasse System.DateTime.

::UtcNow

Eigenschappen van scalaire objecten en verzamelingen

De eigenschappen van een (“scalair”) object van een bepaald type zijn vaak verschillend van de eigenschappen van een verzameling objecten van hetzelfde type.Bijvoorbeeld, elke service heeft een DisplayName eigenschap, maar een verzameling van services heeft geen DisplayName eigenschap.

De volgende opdracht krijgt de waarde van de DisplayName eigenschap van de ‘Audiosrv’ service.

(Get-Service Audiosrv).DisplayName
Windows Audio

Begin in PowerShell 3.0, PowerShell probeert scripting fouten die voortvloeien uit de verschillende eigenschappen van scalaire objecten en collecties te voorkomen. Dezelfde opdracht retourneert de waarde van de DisplayName eigenschap van elke service die Get-Service retourneert.

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

Wanneer u een collectie indient, maar een eigenschap opvraagt die alleen bestaat op enkele (“scalar”) objecten, retourneert PowerShell de waarde van die eigenschap voor elk object in de collectie.

Alle collecties hebben een Count eigenschap die retourneert hoeveel objecten zich in de collectie bevinden.

(Get-Service).Count
176

Beginnend in PowerShell 3.0, als u de eigenschap Count of Length van nul objecten of van één object opvraagt, geeft PowerShell de juiste waarde terug.

(Get-Service Audiosrv).Count
1

Als een eigenschap bestaat op de afzonderlijke objecten en op de verzameling, wordt alleen de eigenschap van de verzameling teruggegeven.

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.