Özellikler hakkında


Kısa açıklama

PowerShell'de nesne özelliklerinin nasıl kullanılacağını açıklar.

Uzun açıklama

PowerShell, veri depolarındaki öğeleri veya bilgisayarın durumunu temsil etmek için nesneler adı verilen yapılandırılmış bilgi koleksiyonlarını kullanır. Genellikle Microsoft .NET Framework'ün parçası olan nesnelerle çalışırsınız ancak PowerShell'de özel nesneler de oluşturabilirsiniz.

Bir öğe ile nesnesi arasındaki ilişki çok yakındır. Bir nesneyi değiştirdiğinizde genellikle onun temsil ettiği öğeyi de değiştirirsiniz. Örneğin PowerShell'de bir dosya aldığınızda asıl dosyayı alamazsınız. Bunun yerine dosyayı temsil eden bir FileInfo nesnesi alırsınız. FileInfo nesnesini değiştirdiğinizde dosya da değişir.

Çoğu nesnenin özellikleri vardır. Özellikler, bir nesneyle ilişkili verilerdir. Farklı nesne türleri farklı özelliklere sahiptir. Örneğin, bir dosyayı temsil eden bir FileInfo nesnesi, dosya salt okunur özniteliğe sahipse $True içeren bir IsReadOnly özelliğine sahiptir. ve eğer değilse $False. Bir dosya sistemi dizinini temsil eden DirectoryInfo nesnesi, üst dizinin yolunu içeren bir Parent özelliğine sahiptir.

Nesne özellikleri

Bir nesnenin özelliklerini almak için Get-Member cmdlet'ini kullanın. Örneğin, bir FileInfo nesnesinin özelliklerini almak için, bir dosyayı temsil eden FileInfo nesnesini almak üzere Get-ChildItem cmdlet'ini kullanın. Ardından FileInfo nesnesini Get-Member'e göndermek için bir ardışık düzen operatörü (|) kullanın. Aşağıdaki komut pwsh.exe dosyasını alır ve onu Get-Member'e gönderir. $PSHOME otomatik değişkeni, PowerShell kurulum dizininin yolunu içerir.

Get-ChildItem $PSHOME\pwsh.exe | Get-Member

Komutun çıktısı FileInfo nesnesinin üyelerini listeler. Üyeler hem özellikleri hem de yöntemleri içerir. PowerShell'de çalışırken nesnelerin tüm üyelerine erişebilirsiniz.

Yöntemleri değil, yalnızca bir nesnenin özelliklerini almak için Get-Member cmdlet'inin MemberType parametresini Property değeriyle kullanın, aşağıdaki örnekte gösterildiği gibi.

Get-ChildItem $PSHOME\pwsh.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;}

Özellikleri bulduktan sonra bunları PowerShell komutlarınızda kullanabilirsiniz.

Özellik değerleri

Belirli bir türdeki her nesne aynı özelliklere sahip olmasına rağmen, bu özelliklerin değerleri belirli bir nesneyi tanımlar. Örneğin, her FileInfo nesnesinin bir CreationTime özelliği vardır ancak bu özelliğin değeri her dosya için farklılık gösterir.

Bir nesnenin özelliklerinin değerlerini almanın en yaygın yolu üye erişim operatörünü (.) kullanmaktır. Nesneyi içeren bir değişken veya nesneyi alan bir komut gibi nesneye bir başvuru yazın. Daha sonra operatörü (.) ve ardından özellik adını yazın.

Örneğin, aşağıdaki komut pwsh.exe dosyasının CreationTime özelliğinin değerini görüntüler. Get-ChildItem komutu, pwsh.exe dosyasını temsil eden bir FileInfo nesnesi döndürür. Komut, herhangi bir özelliğe erişilmeden önce yürütüldüğünden emin olmak için parantez içine alınmıştır.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Ayrıca bir nesneyi bir değişkene kaydedebilir ve aşağıdaki örnekte gösterildiği gibi üye erişimi (.) yöntemini kullanarak özelliklerini alabilirsiniz:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Bir nesnenin özellik değerlerini görüntülemek için Select-Object ve Format-List cmdlet'lerini de kullanabilirsiniz. Select-Object ve Format-List'in her biri bir Property parametresine sahiptir. Bir veya daha fazla özelliği ve bunların değerlerini belirtmek için Özellik parametresini kullanabilirsiniz. Veya tüm özellikleri temsil etmek için joker karakter (*) kullanabilirsiniz.

Örneğin, aşağıdaki komut pwsh.exe dosyasının tüm özelliklerinin değerlerini görüntüler.

Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName         : pwsh.exe
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -a---
ModeWithoutHardLink : -a---
VersionInfo         : File:             C:\Program Files\PowerShell\7-preview\pwsh.exe
                      InternalName:     pwsh.dll
                      OriginalFilename: pwsh.dll
                      FileVersion:      7.3.0.5
                      FileDescription:  pwsh
                      Product:          PowerShell
                      ProductVersion:   7.3.0-preview.5 SHA: cfc237ac85cf24fa760923ace568201c8f3256aa
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         Language Neutral

BaseName            : pwsh
ResolvedTarget      : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target              :
LinkType            :
Length              : 285088
DirectoryName       : C:\Program Files\PowerShell\7-preview
Directory           : C:\Program Files\PowerShell\7-preview
IsReadOnly          : False
FullName            : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension           : .exe
Name                : pwsh.exe
Exists              : True
CreationTime        : 6/14/2022 5:17:14 PM
CreationTimeUtc     : 6/14/2022 10:17:14 PM
LastAccessTime      : 7/18/2022 11:32:06 AM
LastAccessTimeUtc   : 7/18/2022 4:32:06 PM
LastWriteTime       : 6/14/2022 5:17:14 PM
LastWriteTimeUtc    : 6/14/2022 10:17:14 PM
LinkTarget          :
Attributes          : Archive

Statik özellikler

PowerShell'de .NET sınıflarının statik özelliklerini kullanabilirsiniz. Statik özellikler, bir nesnenin özellikleri olan standart özelliklerden farklı olarak sınıfın özellikleridir.

Bir sınıfın statik özelliklerini elde etmek için Get-Member cmdlet'inin Static parametresini kullanın. Örneğin, aşağıdaki komut System.DateTime sınıfının statik özelliklerini alır.

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

Statik bir özelliğin değerini almak için aşağıdaki sözdizimini kullanın.

[<ClassName>]::<Property>

Örneğin, aşağıdaki komut System.DateTime sınıfının UtcNow statik özelliğinin değerini alır.

[System.DateTime]::UtcNow

Üye erişimi numaralandırması

PowerShell 3,0'dan başlayarak, liste koleksiyonunda bulunmayan bir özelliğe erişmek için üye erişim operatörünü (.) kullandığınızda, PowerShell koleksiyondaki öğeleri otomatik olarak numaralandırır ve değerini döndürür. Her öğenin özelliği. Daha fazla bilgi için bkz. about_Member-Access_Enumeration.

Örnekler

Bu komut, Get-Service'in döndürdüğü her hizmetin DisplayName özelliğinin değerini döndürür.

(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...

Tüm koleksiyonlarda, koleksiyondaki nesnelerin sayısını döndüren bir Count özelliği bulunur.

(Get-Service).Count
176

PowerShell 3.0'dan itibaren koleksiyon olmayan tekil nesnelerin Count veya Length özelliğini alabilirsiniz.

(Get-Service Audiosrv).Count
1

Ancak bazı nesnelerin Length özelliği vardır. Örneğin, bir dizenin Uzunluğu, dizedeki karakter sayısıdır. Count özelliği, nesnenin örneklerinin sayısıdır.

PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1

Bireysel nesnelerde ve koleksiyonda bir özellik mevcutsa yalnızca koleksiyonun özelliği döndürülür.

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

Ayrıca bakınız

  • about_Objects
  • about_Member-Access_Enumeration
  • about_Methods
  • Format-List
  • Get-Member
  • Select-Object

İlgili makaleler