Aracılığıyla paylaş


about_Properties

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 göstermek için nesneler olarak adlandırılan 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ın. Bir nesneyi değiştirdiğinizde, genellikle temsil ettiği öğeyi değiştirirsiniz. Örneğin, PowerShell'de bir dosya aldığınızda gerçek 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 FileInfo nesnesinin, dosyanın salt okunur özniteliğine sahip olup olmadığını ve $False yoksa içeren $True bir IsReadOnly özelliği vardır. Bir dosya sistemi dizinini temsil eden DirectoryInfo nesnesinin üst dizinin yolunu içeren bir Parent özelliği vardır.

Nesne özellikleri

Bir nesnenin özelliklerini almak için cmdlet'ini Get-Member kullanın. Örneğin, bir FileInfo nesnesinin özelliklerini almak için cmdlet'ini Get-ChildItem kullanarak bir dosyayı temsil eden FileInfo nesnesini alın. Ardından FileInfo nesnesini Get-Memberadresine göndermek için işlem hattı işlecini (|) kullanın. Aşağıdaki komut dosyayı alır powershell.exe ve adresine Get-Membergönderir. Otomatik $PSHOME değişken, PowerShell yükleme dizininin yolunu içerir.

Get-ChildItem $PSHOME\powershell.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öntemlerin değil, yalnızca bir nesnenin özelliklerini almak için, aşağıdaki örnekte gösterildiği gibi cmdlet'in Get-Member MemberType parametresini değeriyle Propertykullanın.

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

Özellikleri buldukktan sonra PowerShell komutlarınızda kullanabilirsiniz.

Özellik değerleri

Belirli bir türün her nesnesi aynı özelliklere sahip olsa da, bu özelliklerin değerleri belirli nesneyi açıklar. Ö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 işlecini (. kullanmaktır). Nesneyi içeren bir değişken veya nesneyi alan bir komut gibi nesneye bir başvuru yazın. Ardından işlecini (.) ve ardından özellik adını yazın.

Örneğin, aşağıdaki komut dosyanın CreationTime özelliğinin powershell.exe değerini görüntüler. komutu, Get-ChildItem öğesini temsil powershell.exe fileeden bir FileInfo nesnesi döndürür. Komut, herhangi bir özelliğe erişilmeden önce yürütülmesini sağlamak için parantez içine alınır.

(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM

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

$a = Get-ChildItem $PSHOME\powershell.exe
$a.CreationTime
Saturday, June 5, 2021 7:07:00 AM

Bir nesnenin Select-Object özellik değerlerini görüntülemek için ve Format-List cmdlet'lerini de kullanabilirsiniz. Select-Object ve Format-List her birinin bir Property parametresi vardır. Bir veya daha fazla özelliği ve bunların değerlerini belirtmek için Property parametresini kullanabilirsiniz. İsterseniz, tüm özellikleri temsil etmek için joker karakteri (*) de kullanabilirsiniz.

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

Get-ChildItem $PSHOME\powershell.exe | Format-List -Property *
PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\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.22000.1 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft? Windows? Operating System
                    ProductVersion:   10.0.22000.1
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : powershell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-exe_31bf3856ad364e35_10.0.22000.1_none_bf599c
                    5a06fbb6f4\powershell.exe}
LinkType          : HardLink
Name              : powershell.exe
Length            : 450560
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.exe
Extension         : .exe
CreationTime      : 6/5/2021 7:07:00 AM
CreationTimeUtc   : 6/5/2021 12:07:00 PM
LastAccessTime    : 7/18/2022 12:16:17 PM
LastAccessTimeUtc : 7/18/2022 5:16:17 PM
LastWriteTime     : 6/5/2021 7:07:00 AM
LastWriteTimeUtc  : 6/5/2021 12:07:00 PM
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 almak için cmdlet'in Static parametresini Get-Member kullanın. Örneğin, aşağıdaki komut sınıfın statik özelliklerini System.DateTime 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 özelliğin değerini almak için aşağıdaki söz dizimini kullanın.

[<ClassName>]::<Property>

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

[System.DateTime]::UtcNow

Üye erişim sabit listesi

PowerShell 3.0'dan başlayarak, üye erişim işlecini (.) kullanarak liste koleksiyonunda olmayan bir özelliğe eriştiğinizde, PowerShell koleksiyondaki öğeleri otomatik olarak numaralandırır ve özelliğin değerini her öğede döndürür. Daha fazla bilgi için bkz . about_Member-Access_Enumeration.

Örnekler

Bu komut, döndüren her hizmetin DisplayName özelliğinin Get-Service 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 koleksiyonlar, koleksiyondaki nesne sayısını döndüren bir Count özelliğine sahiptir.

(Get-Service).Count
176

PowerShell 3.0'dan başlayarak, 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, dizenin Uzunluğu dizedeki karakter sayısıdır. Count özelliği, nesnenin örnek sayısıdır.

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

Tek tek nesnelerde ve koleksiyonda bir özellik varsa, 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 bkz.