Aracılığıyla paylaş


12. Öznitelikler

Editörün notu

Önemli

Windows PowerShell Dil Belirtimi 3.0 Aralık 2012'de yayımlanmıştır ve Windows PowerShell 3.0'ı temel alır. Bu belirtim PowerShell'in geçerli durumunu yansıtmaz. Bu belgeleri geçerli durumu yansıtacak şekilde güncelleştirme planı yoktur. Bu belgeler, geçmişe yönelik başvuru için burada sunulmuştur.

Belirtim belgesi, Şu konumdaki Microsoft İndirme Merkezi'nden bir Microsoft Word belgesi olarak kullanılabilir: https://www.microsoft.com/download/details.aspx?id=36389 Bu Word belgesi burada Microsoft Learn'de sunu için dönüştürülmüştür. Dönüştürme sırasında, Docs platformu için biçimlendirmeye uyum sağlamak için bazı editoryal değişiklikler yapılmıştır. Bazı yazım hataları ve küçük hatalar düzeltildi.

özniteliği nesnesi, önceden tanımlanmış sistem bilgilerini parametre bloğu veya parametre (§8.10) olabilecekhedef öğesiyle ilişkilendirir. Her öznitelik nesnesinin biröznitelik türü vardır.

Bir öznitelik tarafından sağlanan bilgiler meta veriolarak da bilinir. Meta veriler komut veya yürütme ortamı tarafından incelenerek komutun verileri nasıl işlediğini veya çalıştırma zamanından önce komutun nasıl işlendiğini veya korunabileceğini denetlemek için dış araçlar tarafından incelenebilir.

Aynı hedef öğeye birden çok öznitelik uygulanabilir.

12.1 Öznitelik belirtimi

Bahşiş

Söz dizimi tanımlarındaki ~opt~ gösterimi söz diziminde sözcüksel varlığın isteğe bağlı olduğunu gösterir.

attribute-list:
    attribute
    attribute-list new-lines~opt~ attribute

attribute:
    [ new-lines~opt~ attribute-name ( attribute-arguments new-lines~opt~ ) new-lines~opt~ ]
    type-literal

attribute-name:
    type-spec

attribute-arguments:
    attribute-argument
    attribute-argument new-lines~opt~ ,
    attribute-arguments

attribute-argument:
    new-lines~opt~ expression
    new-lines~opt~ simple-name
    new-lines~opt~ simple-name = new-lines~opt~ expression

Öznitelik, öznitelik-adı ve isteğe bağlı konumsal ve adlandırılmış bağımsız değişkenlerin listesinden oluşur. Konumsal bağımsız değişkenler (varsa), adlandırılmış bağımsız değişkenlerden önce gelir. Adlandırılmış bağımsız değişken, basit adve isteğe bağlı olarak bir eşittir işareti ile ardından gelen bir ifade'ten oluşur. İfade atlanırsa, $true değeri varsayılır.

öznitelik-adı ayrılmış bir öznitelik türüdür (§12.3) veya uygulama tanımlı bir öznitelik türüdür.

12.2 Öznitelik örnekleri

Öznitelik örneği, öznitelik türünün nesnesidir. Örnek, çalışma zamanında bir özniteliği temsil eder.

Bazı öznitelik türlerine sahip bir nesnesi oluşturmak için A()notasyonunu kullanın. Öznitelik, örneği []'de olduğu gibi [A()]içine alarak bildirilir. Bazı öznitelik türleri, işlevler ve cmdlet'ler gibi konumsal ve adlandırılmış parametrelere (§8.14) sahiptir. Mesela

[A(10,IgnoreCase=$true)]

bağımsız değişken değeri 10 olan bir konumsal parametre ve IgnoreCaseadlı adlandırılmış parametre kullanılarak oluşturulan ve bağımsız değişken değeri olan $true türünün bir örneğini gösterir.

12.3 Ayrılmış öznitelikler

Aşağıdaki bölümlerde açıklanan öznitelikler PowerShell işlevlerinin, filtrelerin, betiklerin ve cmdlet'lerin davranışını artırmak veya değiştirmek için kullanılabilir.

12.3.1 Takma Ad özniteliği

Bu öznitelik, bir parametre için alternatif bir ad belirtmek üzere betik parametresi içinde kullanılır. Bir parametrenin birden çok diğer adı olabilir ve her diğer ad parametre listesiiçinde benzersiz olmalıdır. Olası bir kullanım, farklı parametre kümelerindeki bir parametre için farklı adlara sahip olmaktır (bkz. ParameterSetName).

Öznitelik bağımsız değişkeninin türü string[] dizisidir.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test1 düşünün:

param (
    [Parameter(Mandatory = $true)]
    [Alias("CN")]
    [Alias("Name", "System")]
    [string[]] $ComputerName
)

Test1 "Mars", "Saturn"                # pass argument by position
Test1 -ComputerName "Mars", "Saturn"  # pass argument by name
Test1 -CN "Mars", "Saturn"            # pass argument using first alias
Test1 -Name "Mars", "Saturn"          # pass argument using second alias
Test1 -Sys "Mars", "Saturn"           # pass argument using third alias

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test2 düşünün:

param (
    [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
    [Alias('PSPath')]
    [string] $LiteralPath
)

Get-ChildItem "E:\*.txt" | Test2 -LiteralPath { $_ ; "`n`t";
    $_.FullName + ".bak" }
Get-ChildItem "E:\*.txt" | Test2

Cmdlet Get-ChildItem (diğer ad dir), döndürdüğü nesneye türünde, stringadlı yeni bir NoteProperty ekler.

12.3.2 AllowEmptyCollection özniteliği

Bu öznitelik, betik-parametre içerisinde, zorunlu parametrenin bağımsız değişkeni olarak boş bir koleksiyona izin vermek amacıyla kullanılır.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param (
    [Parameter(Mandatory = $true)]
    [AllowEmptyCollection()]
    [string[]] $ComputerName
)

Test "Red", "Green" # $ComputerName has Length 2
Test "Red" # $ComputerName has Length 1
Test -Comp @() # $ComputerName has Length 0

12.3.3 AllowEmptyString özniteliği

Bu öznitelik, betik-parametre içinde, zorunlu bir parametrenin bağımsız değişkeni olarak boş bir dizeye izin vermek için kullanılır.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param (
    [Parameter(Mandatory = $true)]
    [AllowEmptyString()]
    [string] $ComputerName
)

Test "Red" # $ComputerName is "Red"
Test "" # empty string is permitted
Test -Comp "" # empty string is permitted

12.3.4 AllowNull özniteliği

Bu öznitelik, örtük bir dönüştürmenin mümkün olmadığı zorunlu bir parametrenin bağımsız değişkeni olarak $null'a izin vermek için betik-parametresi'de kullanılır.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Testi düşünün:

param (
    [Parameter(Mandatory = $true)]
    [AllowNull()]
    [int[]] $Values
)

Test 10, 20, 30     # $values has Length 3, values 10, 20, 30
Test 10, $null, 30  # $values has Length 3, values 10, 0, 30
Test -Val $null     # $values has value $null

Yukarıdaki ikinci durum için bu özniteliğin gerekli olmadığını unutmayın; zaten $null'ten int'e örtük bir dönüştürme vardır.

12.3.5 CmdletBinding özniteliği

Bu öznitelik, bir işlevin parametre bloğu içindeki öznitelik listesi'de, işlevin bir cmdlet gibi davrandığını göstermek için kullanılır. Özellikle, işlevlerin begin, process ve end adlı blokları (§8.10.7) kullanarak $PSCmdlet değişkeni aracılığıyla bir dizi yönteme ve özelliğe erişmesine olanak tanır.

Bu öznitelik mevcut olduğunda, eşleşen konumsal parametreleri olmayan konumsal bağımsız değişkenler parametre bağlamanın başarısız olmasına neden olur ve $args tanımlanmaz. (Bu öznitelik olmadan $args eşleşmeyen konumsal bağımsız değişken değerlerini alır.)

Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
SupportsShouldProcess (adlandırılmış)

Tür: bool; Varsayılan değer: $false

İşlevin, işlev sistemde değişiklik yapılmadan önce kullanıcıdan geri bildirim almak için kullanılan ShouldProcess yöntemine çağrıları destekleyip desteklemediğini belirtir. Bir $true değeri, bunun doğru olduğunu gösterir. '$false' değeri, bu durumun olmadığını belirtir.

ConfirmImpact (adlandırılmış)

Tür: dize; Varsayılan değer: "Orta"

Gerçekleştirilen eylemin etki düzeyini belirtir. ShouldProcess metodu çağrısı, yalnızca ConfirmImpact bağımsız değişkeni, $ConfirmPreference tercih değişkeninin değerine eşit veya daha büyük olduğunda bir onay istemi görüntüler.

Bu bağımsız değişkenin olası değerleri şunlardır:

Hiçbiri: Onay isteklerini engeller.

Düşük: Gerçekleştirilen eylemin veri kaybı riski düşüktür.

Orta: Gerçekleştirilen eylemin veri kaybı riski orta düzeydedir.

Yüksek: Gerçekleştirilen eylemin veri kaybı riski yüksektir.

$ConfirmPreference değeri, yalnızca eşit veya daha yüksek etki düzeyine sahip cmdlet'lerin işlemlerini gerçekleştirmeden önce onay istemesi için ayarlanabilir. Örneğin, $ConfirmPreference Orta olarak ayarlanırsa, Orta veya Yüksek etki düzeyine sahip cmdlet'ler onay isteyebilir. Düşük etki düzeyine sahip cmdlet'lerden gelen istekler gizleniyor.

DefaultParameterSetName (adlandırılmış)

Tür: dize; Varsayılan değer: "__AllParameterSets"

Bağımsız değişkenlerden belirlenemiyorsa, kullanılacak parametre kümesini belirtir. Parameter ([§12.3.7][§12.3.7]) özniteliğinde ParameterSetName adlı bağımsız değişkenine bakın.

PositionalBinding (adlandırılmış)

Tür: bool; Varsayılan değer: $true

Konumsal bağlamanın desteklenip desteklenmediğini belirtir. Parametre ([§12.3.7][§12.3.7]) özniteliğinde Konum veya ParameterSetName adlandırılmış bağımsız değişkenleri için varsayılan olmayan değerler belirten bir parametre varsa, bu argümanın değeri göz ardı edilir. Bağımsız değişken $false ise, hiçbir parametre konumlu olmaz; aksi durumda, parametrelere belirlenme sıralarına göre bir konum atanır.

Aşağıda bu özniteliği kullanmaya yönelik bir çerçeve örneği verilmiştir:

[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )

begin { ... }
Get-process { ... }
end { ... }

12.3.6 OutputType özniteliği

Bu öznitelik, döndürülen türleri belirtmek için öznitelik listesi'deki param-blok'te kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
Tür (konum 0)

Tür: string[] veya sabit değer türü dizisi

Döndürülen değerlerin türlerinin listesi.

ParameterSetName (isimli)

Tür: dize[]

Type parametresinin ilgili öğeleri tarafından belirtilen türleri döndüren parametre kümelerini belirtir.

Bu özniteliğin kullanımına birkaç örnek aşağıda verilmiştir:

[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )

12.3.7 Parametre özniteliği

Bu öznitelik, bir betik-parametresindekullanılmaktadır. Parametresinin özelliklerini tanımlamak için aşağıdaki adlandırılmış bağımsız değişkenler kullanılır:

Parametre Amaç
HelpMessage (adlandırılmış)

Tür: dize

Bu argüman, parametrenin kısa bir açıklamasını içeren bir mesajı belirtir. bu ileti, işlev veya cmdlet çalıştırıldığında uygulama tanımlı bir şekilde kullanılır ancak HelpMessage içeren zorunlu bir parametrenin karşılık gelen bağımsız değişkeni yoktur.

Aşağıdaki örnekte, parametrenin açıklamasını sağlayan bir parametre bildirimi gösterilmektedir.

param ( [Parametre(Zorunlu = $true,
HelpMessage = "Bilgisayar isimleri dizisi.")
[string[]] $ComputerName )

Windows PowerShell: Gerekli bir parametre sağlanmazsa, çalışma zamanı kullanıcıdan bir parametre değeri ister. İstem iletişim kutusu HelpMessage metnini içerir.

Zorunlu (adlandırılmış)

Tür: bool; Varsayılan değer: $false

Bu bağımsız değişken, parametrenin verilen parametre kümesi içinde gerekli olup olmadığını belirtir (aşağıdaki ParameterSetName bağımsız değişkenine bakın). $true bir değer, bunun böyle olduğunu gösterir. "$false değeri, bunun olmadığını gösterir."

param ( [Parametre(Zorunlu = $true)]
[string[]] $ComputerName )

Windows PowerShell: Gerekli bir parametre sağlanmazsa, çalışma zamanı kullanıcıdan bir parametre değeri ister. İstem iletişim kutusu, varsa HelpMessage metnini içerir.

ParameterSetName (isimli)

Tür: dize; Varsayılan değer: "__AllParameterSets"

Farklı senaryolar için farklı eylemler gerçekleştirebilen tek bir işlev veya cmdlet yazmak mümkündür. Bunu yapmak istediği eyleme bağlı olarak farklı parametre gruplarını ortaya çıkararak yapar. Bu tür parametre gruplandırmalarınaparametre kümeleri adı verilir.

ParameterSetName bağımsız değişkeni, parametrenin ait olduğu parametre kümesini belirtir. Bu davranış, her parametre kümesinin başka bir parametre kümesinin üyesi olmayan benzersiz bir parametreye sahip olması gerektiği anlamına gelir.

Birden çok parametre kümesine ait parametreler için, her parametre kümesi için bir Parametre özniteliği ekleyin. Bu, parametrenin her parametre kümesi için farklı şekilde tanımlanmasını sağlar.

Birden çok konumsal parametre içeren bir parametre kümesi, her parametre için benzersiz konumlar tanımlamalıdır. Hiçbir iki konumsal parametre aynı konumu belirtemez.

Parametre için parametre kümesi belirtilmezse, parametre tüm parametre kümelerine aittir.

Birden çok parametre kümesi tanımlandığında, varsayılan parametre kümesini belirtmek için CmdletBinding özniteliğinin DefaultParameterSetName adlı bağımsız değişkeni ([§12.3.5][§12.3.5]) kullanılır. Çalışma zamanı, komut tarafından sağlanan bilgilere göre kullanılacak parametre kümesini belirleyemezse varsayılan parametre kümesini kullanır veya varsayılan parametre kümesi belirtilmediyse bir özel durum oluşturur.

Aşağıdaki örnekte, iki farklı parametre kümesine ait iki parametrenin parametre bildirimine ve her iki kümeye ait üçüncü parametreye sahip bir test işlevi gösterilmektedir:

param ( [Parametre(Zorunlu = $true,
ParameterSetName = "Bilgisayar")]
[string[]] $ComputerName,

[Parametre(Zorunlu = $true,
ParameterSetName = "User")]
[string[]] $UserName,

[Parametre(Zorunlu = $true,
ParameterSetName = "Bilgisayar")]
[Parameter(ParameterSetName = "User")]
[int] $SharedParam = 5 )

if ($PSCmdlet.ParameterSetName -eq "Bilgisayar")
{
# "Computer" parametre kümesini işleme al
}

elseif ($PSCmdlet.ParameterSetName -eq "Kullanıcı")
{
# "User" parametre kümesini ele al
}

}

Test -ComputerName "Mars","Venüs" -SharedParam 10
Test -UserName "Mary","Jack"
Test -UserName "Mary","Jack" -SharedParam 20

Konum (adlandırılmış)

Tür: int (tam sayı)

Bu bağımsız değişken, parametrenin bağımsız değişken listesindeki konumunu belirtir. Bu bağımsız değişken belirtilmezse, parametre ayarlandığında parametre adı veya diğer adı açıkça belirtilmelidir. bir işlevin parametrelerinden hiçbiri konumlara sahip değilse, konumlar her parametreye alındıkları sırayla atanır.

Aşağıdaki örnekte, işlev çağrıldığında değeri ilk bağımsız değişken olarak belirtilmesi gereken bir parametrenin bildirimi gösterilir.

param ( [Parametre(Pozisyon = 0)]
[string[]] $ComputerName )

ValueFromPipeline (adlandırılmış)

Tür: bool; Varsayılan değer: $false

Bu bağımsız değişken, parametrenin bir işlem hattı nesnesinden girişi kabul edip etmediğini belirtir. Bir $true değeri, bunun doğru olduğunu gösterir. '$false' değeri, bir şeyin olmadığını belirtir.

İşlevin veya cmdlet'in nesnenin yalnızca bir özelliğine değil, tam nesneye erişip erişmediğini $true belirtin.

Parametre kümesindeki yalnızca bir parametre ValueFromPipeline'i $true olarak bildirebilir.

Aşağıdaki örnek, işlem hattından işleve geçirilen giriş nesnesini kabul eden zorunlu bir parametrenin ($ComputerName) parametre bildirimini gösterir.

param ( [Parametre(Zorunlu = $true,
ValueFromPipeline=$true)]
[string[]] $ComputerName )

Bu parametreyi Diğer Ad özniteliğiyle birlikte kullanma örneği için bkz. [§12.3.1][§12.3.1].

ValueFromPipelineByPropertyName (adlandırılmış)

Tür: bool; Varsayılan değer: $false

Bu bağımsız değişken, parametrenin değerini bu parametreyle aynı ada veya aynı takma ada sahip bir işlem hattı nesnesinin özelliğinden alacağını belirtir. Bir $true değeri, bunun doğru olduğunu gösterir. '$false' değeri, bir şeyin olmadığını belirtir.

Aşağıdaki koşullar doğruysa $true belirtin: Parametre, kanal içinden gelen nesnenin bir özelliğine erişir ve bu özelliğin adı parametreyle aynı veya parametreyle aynı takma ada sahiptir.

ValueFromPipelineByPropertyName değerinin $true olarak ayarlanmış bir parametrenin, ValueFromPipeline $true olarak ayarlanmış aynı kümede bir parametresi olması gerekmez.

bir işlevin parametre $ComputerName varsa ve kanallı nesne bir ComputerName özelliğine sahipse, ComputerName özelliğinin değeri İşlevin $ComputerName parametresine atanır:

param ( [Parametre(Zorunlu = $true,
ValueFromPipelineByPropertyName = $true)
[string[]] $ComputerName )

Parametre kümesindeki birden çok parametre, ValueFromPipelineByPropertyName değerini $true olarak tanımlayabilir. Tek bir giriş nesnesi birden çok parametreye bağlanamasa da, bu giriş nesnesindeki farklı özellikler farklı parametrelere bağlanabilir.

Bir parametreyi giriş nesnesinin özelliğiyle bağlarken, çalışma zamanı ortamı önce parametresiyle aynı ada sahip bir özellik arar.  Böyle bir özellik yoksa, çalışma zamanı ortamı bu parametrenin diğer adlarını bildirim sırasına göre arar ve bir özelliğin var olduğu ilk diğer adı seçer.

işlev Process-Date
{
param(
[Parameter(ValueFromPipelineByPropertyName=$true)]
[int]$Yıl,

[Parameter(ValueFromPipelineByPropertyName=$true)]
[int]$Month,

[Parameter(ValueFromPipelineByPropertyName=$true)]
[int]$Gün
)

işlem { ... }
}

Get-Date | Process-Date

KalanArgümanlardanDeğer (adlandırılmış)

Tür: bool; Varsayılan değer: $false

Bu bağımsız değişken, parametresinin işlevin parametrelerine bağlı olmayan kalan tüm bağımsız değişkenleri kabul edip etmediğini belirtir. Bir $true değeri, bunun doğru olduğunu gösterir. '$false' değeri, bir şeyin olmadığını belirtir.

Aşağıdaki örnekte, test işlevine geçirilen giriş nesnesinin kalan tüm bağımsız değişkenlerini kabul eden bir parametre $Others gösterilmektedir:

param ( [Parametre(Zorunlu = $true)][int] $p1,
[Parametre(Zorunlu = $true)][int] $p2,
[Parametre(DeğerKalanArgümanlardan = $true)]
[string[]] $Others )

Test 10 20 # $Others Uzunluğu 0
Test 10 20 30 40 # $Others'ın uzunluğu 2'dir, değeri ise 30,40'tır.

Bir uygulama diğer öznitelikleri de tanımlayabilir.

Aşağıdaki öznitelikler de sağlanır:

  • HelpMessageBaseName: Kaynak tanımlayıcılarının bulunduğu konumu belirtir. Örneğin, bu parametre yerelleştirilecek Yardım iletilerini içeren bir kaynak derlemesi belirtebilir.
  • HelpMessageResourceId: Yardım iletisinin kaynak tanımlayıcısını belirtir.

12.3.8 PSDefaultValue özniteliği

Bu öznitelik, bir betik-parametre içerisinde, parametre hakkında ek bilgi sağlamak için kullanılır. özniteliği, uygulama tanımlı bir şekilde kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
Yardım (adlandırılmış)

Tür: dize

Bu bağımsız değişken, bir parametrenin varsayılan değerinin kısa bir açıklamasını içermesi amaçlanan bir ileti belirtir. Bu ileti, uygulama tanımlı bir şekilde kullanılır.

Windows PowerShell: İleti, [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help) cmdlet'i tarafından görüntülenen yardım konusunun parametresinin açıklaması kapsamında kullanılır.

Değer (adlandırılmış)

Tür: object

Bu bağımsız değişken, bir parametrenin varsayılan değeri olması amaçlanan bir değeri belirtir. Değer, uygulama tanımlı bir şekilde kullanılır.

Windows PowerShell: Bu değer, Yardım özelliği belirtilmediğinde [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help)cmdlet'i tarafından görüntülenen yardım konusunun parametresinin açıklaması kapsamında kullanılır.

12.3.9 SupportsWildcards özniteliği

Bu öznitelik, bir betik-parametre içerisinde, parametre hakkında ek bilgi sağlamak için kullanılır. özniteliği, uygulama tanımlı bir şekilde kullanılır.

Bu öznitelik, Get-Help cmdlet'i tarafından görüntülenen yardım konusu için parametresinin açıklamasının bir parçası olarak kullanılır.

12.3.10 ValidateCount özniteliği

Bu öznitelik, parametrenin kabul edebildiği en düşük ve en fazla bağımsız değişken değeri sayısını belirtmek için betik-parametre kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
MinLength (pozisyon 0)

Tür: int

Bu bağımsız değişken, izin verilen en az bağımsız değişken değeri sayısını belirtir.

Maksimum Uzunluk (konum 1)

Tür: int

Bu bağımsız değişken, izin verilen en fazla bağımsız değişken değeri sayısını belirtir.

Bu özniteliğin olmaması halinde parametrenin karşılık gelen bağımsız değişken değeri listesi herhangi bir uzunlukta olabilir.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Testi düşünün:

param (
    [ValidateCount(2, 5)]
    [int[]] $Values
)

Temp 10, 20, 30
Temp 10                         # too few argument values
Temp 10, 20, 30, 40, 50, 60     # too many argument values

[ValidateCount(3, 4)]$Array = 1..3
$Array = 10                     # too few argument values
$Array = 1..100                 # too many argument values

12.3.11 ValidateLength özniteliği

Bu öznitelik, türünün dize olması gereken parametre bağımsız değişkeninin minimum ve maksimum uzunluğunu belirtmek için betik-parametre veya değişken'te kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
MinLength (pozisyon 0)

Tür: int (tamsayı)

Bu bağımsız değişken izin verilen en az karakter sayısını belirtir.

Maksimum Uzunluk (konum 1)

Tip: int

Bu bağımsız değişken, izin verilen en fazla karakter sayısını belirtir.

Bu özniteliğin olmaması halinde parametrenin karşılık gelen bağımsız değişkeni herhangi bir uzunlukta olabilir.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Testi düşünün:

param ( [Parameter(Mandatory = $true)]
[ValidateLength(3,6)]
[string[]] $ComputerName )

Test "Thor","Mars"     # length is ok
Test "Io","Mars"       # "Io" is too short
Test "Thor","Jupiter"  # "Jupiter" is too long

12.3.12 ValidateNotNull özniteliği

Bu öznitelik, parametrenin bağımsız değişkeninin ya da null değerli bir öğe içeren bir koleksiyon olamayacağını belirtmek için betik-parametre veya $null içinde kullanılır.

Aşağıdaki param bloğuna sahip ve 'shown' olarak adlandırılan bir işlev çağrısı Test düşünün:

param (
    [ValidateNotNull()]
    [string[]] $Names
)

Test "Jack", "Jill"     # ok
Test "Jane", $null      # $null array element value not allowed
Test $null              # null array not allowed

[ValidateNotNull()]$Name = "Jack" # ok
$Name = $null           # null value not allowed

12.3.13 ValidateNotNullOrEmpty özniteliği

Bu öznitelik, betik-parametresi veya değişkeni içinde, argümanın $null, boş dize veya boş bir dizi olamayacağını ya da $null değerli veya boş dize öğesi içeren bir koleksiyon olamayacağını belirtmek için kullanılır.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param (
    [ValidateNotNullOrEmpty()]
    [string[]] $Names
)

Test "Jack", "Jill"    # ok
Test "Mary", ""        # empty string not allowed
Test "Jane", $null     # $null array element value not allowed
Test $null             # null array not allowed
Test @()               # empty array not allowed

[ValidateNotNullOrEmpty()]$Name = "Jack" # ok
$Name = ""             # empty string not allowed
$Name = $null          # null value not allowed

12.3.14 ValidatePattern özniteliği

Bu öznitelik, bir betik-parametre veya bir değişken içinde kullanılmak üzere, parametrenin bağımsız değişkeninin desenini eşleştirmeye yönelik bir normal ifade belirtmek için kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
RegexString (konum 0)

Tür: Dize

Parametrenin bağımsız değişkenini doğrulamak için kullanılan normal ifade

Seçenekler (adlandırılmış)

Tür: Normal-Expression-Option

İzin verilen değerler için [§4.2.6.4][§4.2.6.4] bölümüne bakın.

Koleksiyon bir bağımsız değişkense, koleksiyondaki her bir öğe desenle eşleşmelidir.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param (
    [ValidatePattern('\^[A-Z][1-5][0-9]$')]
    [string] $Code,

    [ValidatePattern('\^(0x|0X)([A-F]|[a-f]|[0-9])([A-F]|[a-f]|[0-9])$')]
    [string] $HexNum,

    [ValidatePattern('\^[+|-]?[1-9]$')]
    [int] $Minimum
)

Test -C A12 # matches pattern
Test -C A63 # does not match pattern

Test -H 0x4f # matches pattern
Test -H "0XB2" # matches pattern
Test -H 0xK3 # does not match pattern

Test -M -4 # matches pattern
Test -M "+7" # matches pattern
Test -M -12 # matches pattern, but is too long

[ValidatePattern('\^[a-z][a-z0-9]\*$')]$ident = "abc"
$ident = "123" # does not match pattern

12.3.15 ValidateRange özniteliği

Bu öznitelik, bir betik-parametre veya değişkene parametrenin en düşük ve en yüksek değerlerini belirtmek amacıyla kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
MinRange (konum 0)

Tür: object

Bu bağımsız değişken izin verilen en düşük değeri belirtir.

MaxRange (konum 1)

Tür: object

Bu bağımsız değişken izin verilen en yüksek değeri belirtir.

Bu özniteliğin olmaması halinde aralık kısıtlaması yoktur.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test1 düşünün:

param (
    [Parameter(Mandatory = $true)]
    [ValidateRange(1, 10)]
    [int] $StartValue
)

Test1 2
Test1 -St 7
Test1 -3 # value is too small
Test1 12 # value is too large

Aşağıdaki param bloğuna ve çağrılarına sahip bir test2 işlev çağrısı düşünün:

param (
    [Parameter(Mandatory = $true)]
    [ValidateRange("b", "f")]
    [string] $Name
)

Test2 "Bravo" # ok
Test2 "Alpha" # value compares less than the minimum
Test2 "Hotel" # value compares greater than the maximum

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test3 düşünün:

param (
    [Parameter(Mandatory = $true)]
    [ValidateRange(0.002, 0.003)]
    [double] $Distance
)

Test3 0.002
Test3 0.0019    # value is too small
Test3 "0.005"   # value is too large

[ValidateRange(13, 19)]$teenager = 15
$teenager = 20  # value is too large

12.3.16 ValidateScript özniteliği

Bu öznitelik, parametrenin bağımsız değişkenini doğrulamak için kullanılacak bir betiği belirlemek üzere betik-parametre'de veya değişken'te kullanılır.

Konum 1'deki argüman, betik-blok-ifadesi.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param (
    [Parameter(Mandatory = $true)]
    [ValidateScript( { ($_ -ge 1 -and $_ -le 3) -or ($_ -ge 20) })]
    [int] $Count
)

Test 2 # ok, valid value
Test 25 # ok, valid value
Test 5 # invalid value
Test 0 # invalid value

[ValidateScript({$_.Length --gt 7})]$password = "password" # ok
$password = "abc123" # invalid value

12.3.17 ValidateSet özniteliği

Bu öznitelik, bir parametrenin bağımsız değişkenine ilişkin geçerli değerler kümesini belirtmek üzere betik-parametre veya değişkeni'te kullanılır. Parametresinin özelliklerini tanımlamak için aşağıdaki bağımsız değişkenler kullanılır:

Parametre Adı Amaç
GeçerliDeğerler (pozisyon 0)

Tür: dize[]

Geçerli değerler kümesi.

IgnoreCase (adlandırılmış)

Tür: bool; Varsayılan değer: $true

String türü parametreleri için büyük/küçük harfin göz ardı edilip edilmeyeceğini belirtir.

Parametrenin bir dizi türü varsa, karşılık gelen bağımsız değişken dizisinin her öğesi değer kümesinin bir öğesiyle eşleşmelidir.

Aşağıdaki param bloğuna sahip ve gösterildiği gibi çağrılan bir işlev çağrısı Test düşünün:

param ( [ValidateSet("Red", "Green", "Blue")]
    [string] $Color,

    [ValidateSet("up", "down", "left", "right", IgnoreCase =
        $false)]
    [string] $Direction

)

Test -Col "RED"    # case is ignored, is a member of the set
Test -Col "white"  # case is ignored, is not a member of the set

Test -Dir "up"     # case is not ignored, is a member of the set
Test -Dir "Up"     # case is not ignored, is not a member of the set

[ValidateSet(("Red", "Green", "Blue")]$color = "RED" # ok, case is ignored
$color = "Purple"  # case is ignored, is not a member of the set