Ominaisuuksista

  • 12/01/2017
  • 5 minuuttia aikaa
    • S
    • s
    • q

Lyhyt kuvaus

Kuvaillaan, miten kohteen ominaisuuksia käytetään PowerShellissä.

Pitkä kuvaus

PowerShell käyttää objekteiksi kutsuttuja jäsenneltyjä tietokokoelmia kuvaamaan tietovarastojen kohteita tai tietokoneen tilaa. Tyypillisesti työskentelet Microsoft .NET Frameworkiin kuuluvien objektien kanssa, mutta voit myös luoda PowerShellissä omia objekteja.

Objektin ja sen objektin välinen yhteys on hyvin läheinen. Kun muutatobjektia, muutat yleensä myös sen edustamaa kohdetta. Kun esimerkiksi saat tiedoston PowerShellissä, et saa varsinaista tiedostoa. Sen sijaan saat FileInfo-objektin, joka edustaa tiedostoa. Kun muutat FileInfo-objektia, myös tiedosto muuttuu.

Useimmilla objekteilla on ominaisuuksia. Ominaisuudet ovat tietoja, jotka liittyvätobjektiin. Eri objektityypeillä on erilaisia ominaisuuksia. EsimerkiksiFileInfo-objektilla, joka edustaa tiedostoa, on IsReadOnly-ominaisuus, joka sisältää $True-ominaisuuden, jos tiedosto on vain lukuominaisuus, ja $False-ominaisuuden, jos tiedosto ei ole lukuominaisuus.DirectoryInfo-objektilla, joka edustaa tiedostojärjestelmän hakemistoa, on Parent-ominaisuus, joka sisältää polun ylimpään hakemistoon.

Objektin ominaisuudet

Objektin ominaisuuksien saamiseksi voit käyttää Get-Member-komentoa. Jos haluat esimerkiksi saada FileInfo-objektin ominaisuudet, käytä Get-ChildItem-cmdlettiä saadaksesi FileInfo-objektin, joka edustaa tiedostoa. Lähetä sitten FileInfo-objekti putkistooperaattorilla (|) Get-Member:ään. Seuraava komento hakee PowerShell.exe-tiedoston ja lähettää sen osoitteeseen Get-Member.Automaattinen muuttuja $Pshome sisältää PowerShellin asennushakemiston polun.

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

Komennon tulosteessa luetellaan FileInfo-objektin jäsenet.Jäsenet sisältävät sekä ominaisuuksia että metodeja. Kun työskentelet PowerShellissä, sinulla on pääsy kaikkiin objektien jäseniin.

Kun haluat saada vain objektin ominaisuudet etkä metodeja, käytä Get-Member-komentokomennon Get-MemberMemberType-parametrin arvoa ”property”, kuten seuraavassa esimerkissä näytetään.

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

Kun olet löytänyt ominaisuudet, voit käyttää niitä PowerShell-komennoissa.

Ominaisuuksien arvot

Vaikka jokaisella tietyn tyyppisellä objektilla on samat ominaisuudet, näiden ominaisuuksien arvot kuvaavat kyseistä objektia. Esimerkiksi jokaisellaFileInfo-objektilla on CreationTime-ominaisuus, mutta tämän ominaisuuden arvoeroaa kunkin tiedoston kohdalla.

Yleisin tapa saada objektin ominaisuuksien arvot on käyttää dot-metodia. Kirjoita viittaus objektiin, kuten muuttuja, joka sisältää objektin, tai komento, joka hakee objektin. Kirjoita sitten piste (.)ja sen jälkeen ominaisuuden nimi.

Esimerkiksi seuraava komento näyttää PowerShell.exe-tiedoston CreationTimeproperty:n arvon. Komento Get-ChildItem palauttaaFileInfo-objektin, joka edustaa PowerShell.exe-tiedostoa. Komento on suljettu sulkuihin sen varmistamiseksi, että se suoritetaan ennen kuin mitään ominaisuuksia käytetään. Komentoa Get-ChildItem seuraa piste ja CreationTime-ominaisuuden nimi seuraavasti:

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

Objektin voi myös tallentaa muuttujaan ja hakea sen ominaisuudet käyttämällä dot-menetelmää, kuten seuraavassa esimerkissä näkyy:

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

Objektin ominaisuuksien arvot saa näkyviin myös komentorivien Select-Object ja Format-List avulla. Select-Object ja Format-List sisältävät kumpikin parametrinProperty. Property-parametrin avulla voit määrittää yhden tai useamman ominaisuuden ja niiden arvot. Tai voit käyttää jokerimerkkiä(*) kaikkien ominaisuuksien esittämiseen.

Esimerkiksi seuraava komento näyttää PowerShell.exe-tiedoston kaikkien ominaisuuksien arvot.

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

Staattiset ominaisuudet

Voit käyttää .NET-luokkien staattisia ominaisuuksia PowerShellissä. Staattisetominaisuudet ovat luokan ominaisuuksia, toisin kuin tavalliset ominaisuudet, jotka ovatolion ominaisuuksia.

Luokan staattisten ominaisuuksien saamiseksi käytäGet-Member-komentokomennon Static-parametria.

Esimerkiksi seuraava komento saa luokanSystem.DateTime staattiset ominaisuudet.

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

Käyttääksesi staattisen ominaisuuden arvon, käytä seuraavaa syntaksia.

::<Property>

Esimerkiksi seuraavalla komennolla haetaan System.DateTime-luokan System.DateTime staattisen UtcNow-ominaisuuden arvo.

::UtcNow

Skalaariobjektien ja kokoelmien ominaisuudet

Tyypin yhden (”skalaariobjektin”) ominaisuudet eroavat usein samantyyppisten objektien kokoelman ominaisuuksista.Esimerkiksi jokaisella palvelulla on DisplayName-ominaisuus, mutta palvelukokoelmalla ei ole DisplayName-ominaisuutta.

Seuraavalla komennolla saadaan ’Audiosrv’-palvelun DisplayName-ominaisuuden arvo.

(Get-Service Audiosrv).DisplayName
Windows Audio

PowerShell 3.0:sta alkaen PowerShell pyrkii estämään skriptausvirheet, jotka johtuvat skalaariobjektien ja kokoelmien erilaisista ominaisuuksista. Sama komento palauttaa jokaisen palvelun DisplayName-ominaisuuden arvon, jonka Get-Service palauttaa.

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

Kun lähetät kokoelman, mutta pyydät ominaisuutta, joka on olemassa vain yksittäisille (”skalaarisille”) objekteille, PowerShell palauttaa ominaisuuden arvon jokaiselle kokoelman objektille.

Kaikissa kokoelmissa on Count-ominaisuus, joka palauttaa, kuinka monta objektia kokoelmassa on.

(Get-Service).Count
176

PowerShell 3.0:sta alkaen, jos pyydät Count- tai Length-ominaisuutta nollalle objektille tai yhdelle objektille, PowerShell palauttaa oikean arvon.

(Get-Service Audiosrv).Count
1

Jos ominaisuus on olemassa sekä yksittäisille objekteille että kokoelmalle,palautetaan vain kokoelman ominaisuus.

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

Vastaa

Sähköpostiosoitettasi ei julkaista.