Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje, jak používat vlastnosti objektů v prostředí PowerShell.
Dlouhý popis
Prostředí PowerShell používá strukturované kolekce informací označované jako objekty, které reprezentují položky v úložištích dat nebo stavu počítače. Obvykle pracujete s objektem, který je součástí Microsoft .NET Framework, ale můžete také vytvořit vlastní objekty v prostředí PowerShell.
Přidružení mezi položkou a jejím objektem je velmi blízko. Při změně objektu obvykle změníte položku, kterou představuje. Když například v PowerShellu získáte soubor, nezískáte skutečný soubor. Místo toho získáte objekt FileInfo, který představuje soubor. Když změníte objekt FileInfo, soubor se také změní.
Většina objektů má vlastnosti. Vlastnosti jsou data, která jsou přidružena k objektu. Různé typy objektů mají různé vlastnosti. Například objekt FileInfo, který představuje soubor, má vlastnost IsReadOnly , která obsahuje $true, pokud soubor obsahuje atribut jen pro čtení a $false Pokud není. Objekt DirectoryInfo, který představuje adresář systému souborů, má nadřazenou vlastnost, která obsahuje cestu k nadřazenému adresáři.
Vlastnosti objektu
Chcete-li získat vlastnosti objektu, použijte Get-Member rutinu. Například pro získání vlastností objektu FileInfo použijte Get-ChildItem rutinu k získání objektu FileInfo, který představuje soubor. Pak použijte operátor kanálu (|) k odeslání objektu FileInfo do Get-Member . Následující příkaz získá soubor PowerShell.exe a odešle ho do Get-Member .
$Automatická proměnná pshome obsahuje cestu k instalačnímu adresáři prostředí PowerShell.
Get-ChildItem $pshome\PowerShell.exe | Get-Member
Výstup příkazu vypíše seznam členů objektu FileInfo . Členové zahrnují vlastnosti i metody. Když pracujete v prostředí PowerShell, máte přístup ke všem členům objektů.
Chcete-li získat pouze vlastnosti objektu a nikoli metody, použijte parametr MemberType Get-Member rutiny s hodnotou "Property", jak je znázorněno v následujícím příkladu.
Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property
TypeName: System.IO.FileInfo
Name 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 nalezení vlastností je můžete použít ve svých příkazech PowerShellu.
Hodnoty vlastností
I když všechny objekty určitého typu mají stejné vlastnosti, hodnoty těchto vlastností popisují příslušný objekt. Například každý objekt FileInfo má vlastnost CreationTime, ale hodnota této vlastnosti se u každého souboru liší.
Nejběžnější způsob, jak získat hodnoty vlastností objektu, je použít metodu tečka. Zadejte odkaz na objekt, například proměnnou, která obsahuje objekt, nebo příkaz, který objekt získá. Pak zadejte tečku (.) následovaný názvem vlastnosti.
Například následující příkaz zobrazí hodnotu vlastnosti CreationTime souboru PowerShell.exe. Get-ChildItemPříkaz vrátí objekt FileInfo, který představuje soubor PowerShell.exe. Příkaz je uzavřený v závorkách, aby se zajistilo, že se spustí před tím, než budou k dispozici vlastnosti. Get-ChildItemPříkaz je následován tečkou a názvem vlastnosti CreationTime, jak je znázorněno níže:
(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM
Můžete také uložit objekt do proměnné a poté získat jeho vlastnosti pomocí metody tečka, jak je znázorněno v následujícím příkladu:
$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM
Pomocí rutin a můžete také Select-Object Format-List Zobrazit hodnoty vlastností objektu. Select-Objecta Format-List každá z nich má parametr vlastnosti . Pomocí parametru Property můžete zadat jednu nebo více vlastností a jejich hodnoty. Nebo můžete použít zástupný znak ( * ) pro reprezentaci všech vlastností.
Například následující příkaz zobrazí hodnoty všech vlastností PowerShell.exe souboru.
Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
2\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
2\WindowsPowerShell\v1.0
PSChildName : PowerShell.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -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 : PowerShell
Target : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex
e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p
owershell.exe}
LinkType : HardLink
Name : PowerShell.exe
Length : 449024
DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0
Directory : C:\Windows\System32\WindowsPowerShell\v1.0
IsReadOnly : False
Exists : True
FullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.ex
Extension : .exe
CreationTime : 9/29/2017 6:43:19 AM
CreationTimeUtc : 9/29/2017 1:43:19 PM
LastAccessTime : 9/29/2017 6:43:19 AM
LastAccessTimeUtc : 9/29/2017 1:43:19 PM
LastWriteTime : 9/29/2017 6:43:19 AM
LastWriteTimeUtc : 9/29/2017 1:43:19 PM
Attributes : Archive
Statické vlastnosti
V PowerShellu můžete použít statické vlastnosti tříd .NET. Statické vlastnosti jsou vlastnosti třídy na rozdíl od standardních vlastností, což jsou vlastnosti objektu.
Pro získání statických vlastností třídy použijte statický parametr rutiny get-member.
Například následující příkaz Získá statické vlastnosti System.DateTime třídy.
Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime
Name 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;}
Chcete-li získat hodnotu statické vlastnosti, použijte následující syntaxi.
[<ClassName>]::<Property>
Například následující příkaz Získá hodnotu statické vlastnosti UtcNow System.DateTime třídy.
[System.DateTime]::UtcNow
Vlastnosti skalárních objektů a kolekcí
Vlastnosti jednoho ("skalárního") objektu určitého typu jsou často odlišné od vlastností kolekce objektů stejného typu. Například každá služba má jako 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 PowerShellem 3,0 se PowerShell pokusí zabránit chybám skriptování, které jsou výsledkem různých vlastností skalárních objektů a kolekcí. Stejný příkaz vrátí hodnotu vlastnosti DisplayName každé služby, která Get-Service vrací.
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
Když zadáte kolekci, ale vyžádáte vlastnost, která existuje pouze pro jednotlivé (skalární) objekty, PowerShell vrátí hodnotu této vlastnosti pro každý objekt v kolekci.
Všechny kolekce mají vlastnost Count , která vrací počet objektů v kolekci.
(Get-Service).Count
176
Když v PowerShellu 3,0 vyžádáte vlastnost Count nebo Length nula objektů nebo jeden objekt, PowerShell vrátí správnou hodnotu.
(Get-Service Audiosrv).Count
1
Pokud vlastnost existuje u jednotlivých objektů a v kolekci, je vrácena pouze vlastnost kolekce.
$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2
Tato funkce funguje také na metodách skalárních objektů a kolekcí. Další informace najdete v tématu about_Methods.