O vlastnostech

  • 12/01/2017
  • 5 minut čtení
    • S
    • s
    • q

Krátký popis

Popisuje, jak používat vlastnosti objektů v prostředí PowerShell.

Dlouhý popis

PowerShell používá strukturované kolekce informací nazývané objekty k reprezentaci položek v datových úložištích nebo stavu počítače. Obvykle pracujete s objekty, které jsou součástí rámce Microsoft .NET Framework, ale v prostředí PowerShell můžete vytvářet i vlastní objekty.

Vazba mezi položkou a jejím objektem je velmi úzká. Když změníte objekt, obvykle změníte i položku, kterou reprezentuje. Například když v prostředí PowerShell získáte soubor, nezískáte skutečný soubor. Místo toho získáte objekt FileInfo, který soubor reprezentuje. Když změníte objekt FileInfo, změní se i soubor.

Většina objektů má vlastnosti. Vlastnosti jsou data, která jsou spojena s objektem. Různé typy objektů mají různé vlastnosti. Například objektFileInfo, který představuje soubor, má vlastnost IsReadOnly, která obsahuje $True, pokud má soubor atribut pouze pro čtení, a $False, pokud nemá.Objekt DirectoryInfo, který představuje adresář souborového systému, má vlastnost Parent, která obsahuje cestu k nadřazenému adresáři.

Vlastnosti objektu

Chcete-li získat vlastnosti objektu, použijte rutinu Get-Member. Chcete-li například získat vlastnosti objektu FileInfo, použijte příkaz Get-ChildItem cmdletto get the FileInfo object that represents a file. Poté pomocí operátoru pipeline (|) odešlete objekt FileInfo do příkazu Get-Member. Následující příkaz získá soubor PowerShell.exe a odešle jej na adresu Get-Member. automatická proměnná $Pshome obsahuje cestu k adresáři PowerShellinstallation.

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

Výstup příkazu obsahuje seznam členů objektu FileInfo. členy zahrnují vlastnosti i metody. Při práci v prostředí PowerShell máte přístup ke všem členům objektů.

Chcete-li získat pouze vlastnosti objektu a ne metody, použijte parametrMemberType rutiny Get-Member s hodnotou „property“, jak je uvedeno v následujícím příkladu.

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

Po zjištění vlastností je můžete použít v příkazech prostředí PowerShell.

Hodnoty vlastností

Ačkoli každý objekt určitého typu má stejné vlastnosti, hodnoty těchto vlastností popisují konkrétní objekt. Například každý objektFileInfo má vlastnost CreationTime, ale hodnota této vlastnosti se pro každý soubor liší.

Nejběžnějším způsobem, jak získat hodnoty vlastností objektu, je použití metody dot. Zadejte odkaz na objekt, například proměnnou, kteráobjekt obsahuje, nebo příkaz, který objekt získá. Pak zadejte tečku (.)následovanou názvem vlastnosti.

Například následující příkaz zobrazí hodnotu vlastnosti CreationTime souboru PowerShell.exe. Příkaz Get-ChildItem vrátí objektFileInfo, který představuje soubor PowerShell.exe. Příkaz je uzavřen v závorkách, aby bylo zajištěno, že bude proveden předtím, než budou zpřístupněny jakékoli vlastnosti. Za příkazem Get-ChildItem následuje tečka a název vlastnosti CreationTime, jak je uvedeno v následujícím příkladu:

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

Objekt můžete také uložit do proměnné a poté získat jeho vlastnosti pomocí metody tečky, jak je uvedeno v následujícím příkladu:

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

K zobrazení hodnot vlastností objektu můžete také použít rutiny Select-Object a Format-List. Příkazy Select-Object a Format-List mají každý parametrVlastnosti. Pomocí parametru Vlastnost můžete zadat jednu nebo více vlastností a jejich hodnoty. Nebo můžete použít zástupný znak(*), který reprezentuje všechny vlastnosti.

Například následující příkaz zobrazí hodnoty všech vlastnostísouboru 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

Statické vlastnosti

V prostředí PowerShell můžete použít statické vlastnosti tříd .NET. Statické vlastnosti jsou vlastnosti třídy, na rozdíl od standardních vlastností, které jsouvlastnostmi objektu.

Pro získání statických vlastností třídy použijte parametr Static rutinyGet-Member.

Například následující příkaz získá statické vlastnosti třídySystem.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;}

Pro získání hodnoty statické vlastnosti použijte následující syntaxi.

::<Property>

Například následující příkaz získá hodnotu statické vlastnosti UtcNow třídy System.DateTime.

::UtcNow

Vlastnosti skalárních objektů a kolekcí

Vlastnosti jednoho („skalárního“) objektu určitého typu se často liší od vlastností kolekce objektů stejného typu.například každá služba má vlastnost DisplayName, ale kolekce služeb nemá vlastnost DisplayName.

Následující příkaz získá hodnotu vlastnosti DisplayName služby’Audiosrv‘.

(Get-Service Audiosrv).DisplayName
Windows Audio

Počínaje prostředím PowerShell 3.0 se prostředí PowerShell snaží zabránit chybám skriptování, kterévyplývají z rozdílných vlastností skalárních objektů a kolekcí. Stejný příkaz vrátí hodnotu vlastnosti DisplayName každé služby, kterou vrátí Get-Service.

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

Pokud odešlete kolekci, ale požadujete vlastnost, která existuje pouze pro jednotlivé („skalární“) objekty, prostředí PowerShell vrátí hodnotu této vlastnosti pro každý objekt v kolekci.

Všechny kolekce mají vlastnost Count, která vrací, kolik objektů je v kolekci.

(Get-Service).Count
176

Počínaje prostředím PowerShell 3.0, pokud požadujete vlastnost Count nebo Length u nulových objektů nebo u jednoho objektu, prostředí PowerShell vrátí správnou hodnotu.

(Get-Service Audiosrv).Count
1

Pokud existuje vlastnost u jednotlivých objektů i u kolekce,vrátí se pouze vlastnost kolekce.

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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.