about_Variables

Kısa açıklama

Değişkenlerin PowerShell'de kullanılabilecek değerleri nasıl depoladığını açıklar.

Uzun açıklama

Tüm değer türlerini PowerShell değişkenlerinde depolayabilirsiniz. Örneğin, komutların sonuçlarını depolayın ve adlar, yollar, ayarlar ve değerler gibi komutlarda ve ifadelerde kullanılan öğeleri depolayın.

Değişken, değerlerin depolandığı bir bellek birimidir. PowerShell'de değişkenler , veya $my_vargibi $abir dolar işareti ($ ile başlayan metin dizeleriyle $processtemsil edilir.

Değişken adları büyük/küçük harfe duyarlı değildir ve boşluklar ve özel karakterler içerebilir. Ancak, özel karakterler ve boşluklar içeren değişken adlarının kullanılması zordur ve bundan kaçınılmalıdır. Daha fazla bilgi için bkz . Özel karakterler içeren değişken adları.

PowerShell'de çeşitli değişken türleri vardır.

  • Kullanıcı tarafından oluşturulan değişkenler: Kullanıcı tarafından oluşturulan değişkenler kullanıcı tarafından oluşturulur ve korunur. Varsayılan olarak, PowerShell komut satırında oluşturduğunuz değişkenler yalnızca PowerShell penceresi açıkken bulunur. PowerShell pencereleri kapatıldığında değişkenler silinir. Bir değişkeni kaydetmek için PowerShell profilinize ekleyin. Genel, betik veya yerel kapsama sahip betiklerde de değişkenler oluşturabilirsiniz.

  • Otomatik değişkenler: Otomatik değişkenler PowerShell'in durumunu depolar. Bu değişkenler PowerShell tarafından oluşturulur ve PowerShell, doğruluklarını korumak için değerlerini gerektiği gibi değiştirir. Kullanıcılar bu değişkenlerin değerini değiştiremez. Örneğin, $PSHOME değişken PowerShell yükleme dizininin yolunu depolar.

    Daha fazla bilgi, bir liste ve otomatik değişkenlerin açıklaması için bkz . about_Automatic_Variables.

  • Tercih değişkenleri: Tercih değişkenleri PowerShell için kullanıcı tercihlerini depolar. Bu değişkenler PowerShell tarafından oluşturulur ve varsayılan değerlerle doldurulur. Kullanıcılar bu değişkenlerin değerlerini değiştirebilir. Örneğin, $MaximumHistoryCount değişken oturum geçmişindeki en fazla girdi sayısını belirler.

    Daha fazla bilgi, bir liste ve tercih değişkenlerinin açıklaması için bkz . about_Preference_Variables.

Değişkenlerle çalışma

Yeni bir değişken oluşturmak için, değişkene değer atamak için atama deyimini kullanın. Değişkeni kullanmadan önce bildirmeniz gerekmez. Tüm değişkenlerin varsayılan değeri olur $null.

PowerShell oturumunuzda tüm değişkenlerin listesini almak için yazın Get-Variable. Değişken adları, değişkenlere başvurmak için kullanılan önceki dolar ($) işareti olmadan görüntülenir.

Örneğin:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Değişkenler, komutların sonuçlarını depolamak için kullanışlıdır.

Örneğin:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Bir değişkenin değerini görüntülemek için, önünde dolar işareti ($ ) bulunan değişken adını yazın.

Örneğin:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Değişkenin değerini değiştirmek için değişkene yeni bir değer atayın.

Aşağıdaki örnekler değişkenin $MyVariable değerini görüntüler, değişkenin değerini değiştirir ve ardından yeni değeri görüntüler.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Bir değişkenin değerini silmek için cmdlet'ini Clear-Variable kullanın veya değerini olarak $nulldeğiştirin.

Clear-Variable -Name MyVariable
$MyVariable = $null

Değişkeni silmek için Remove-Variable veya Remove-Item kullanın.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

Bir deyimle birden çok değişkene değer atamak da mümkündür. Aşağıdaki örnekler aynı değeri birden çok değişkene atar:

$a = $b = $c = 0

Sonraki örnek, birden çok değişkene birden çok değer atar.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Daha ayrıntılı bilgi için about_Assignment_Operators birden çok değişken atama bölümüne bakın.

Değişken türleri

Tamsayılar, dizeler, diziler ve karma tablolar dahil olmak üzere herhangi bir nesne türünü bir değişkende depolayabilirsiniz. Ayrıca işlemleri, hizmetleri, olay günlüklerini ve bilgisayarları temsil eden nesneler.

PowerShell değişkenleri gevşek bir şekilde yazılır, yani belirli bir nesne türüyle sınırlı değildir. Tek bir değişken, aynı anda farklı nesne türlerinde bir koleksiyon veya dizi bile içerebilir.

Bir değişkenin veri türü, değişkenin değerlerinin .NET türleri tarafından belirlenir. Bir değişkenin nesne türünü görüntülemek için Get-Member kullanın.

Örneğin:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

Bir değişkenin yalnızca belirli nesne türlerini veya o türe dönüştürülebilecek nesneleri içerediğinden emin olmak için tür özniteliğini ve atama gösterimini kullanabilirsiniz. Başka türde bir değer atamaya çalışırsanız, PowerShell değeri türüne dönüştürmeye çalışır. Tür dönüştürülemezse atama deyimi başarısız olur.

Atama gösterimini kullanmak için değişken adından önce köşeli ayraç içine alınmış bir tür adı girin (atama deyiminin sol tarafında). Aşağıdaki örnek yalnızca tamsayılar içerebilen bir $number değişken, yalnızca dizeler içerebilen bir $words değişken ve yalnızca DateTime nesneleri içerebilen bir $dates değişken oluşturur.

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Komutlarda ve ifadelerde değişkenleri kullanma

Bir komut veya ifadede değişken kullanmak için, önünde dolar ($) işareti bulunan değişken adını yazın.

Değişken adı ve dolar işareti tırnak içine alınmadıysa veya çift tırnak (") işareti içine alınmışsa, değişkenin değeri komut veya ifadede kullanılır.

Değişken adı ve dolar işareti tek tırnak işareti (') içine alınmışsa, ifadede değişken adı kullanılır.

PowerShell'de tırnak işaretlerini kullanma hakkında daha fazla bilgi için bkz . about_Quoting_Rules.

Bu örnek, PowerShell konsolundaki $PROFILE PowerShell kullanıcı profili dosyasının yolu olan değişkenin değerini alır.

$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Bu örnekte, PowerShell profilini notepad.exe açabilen iki komut gösterilmiştir. Çift tırnak işareti (") işareti olan örnekte değişkenin değeri kullanılır.

notepad $PROFILE

notepad "$PROFILE"

Aşağıdaki örneklerde değişkeni değişmez metin olarak değerlendiren tek tırnak (') işaretleri kullanılır.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Özel karakterler içeren değişken adları

Değişken adları bir dolar ($) işaretiyle başlar ve alfasayısal karakterler ve özel karakterler içerebilir. Değişken adı uzunluğu yalnızca kullanılabilir bellekle sınırlıdır.

En iyi yöntem, değişken adlarının yalnızca alfasayısal karakterleri ve alt çizgi (_) karakterini içermesidir. Boşluk ve diğer özel karakterleri içeren değişken adlarının kullanılması zordur ve bundan kaçınılmalıdır.

Alfasayısal değişken adları şu karakterleri içerebilir:

  • Şu kategorilerden Unicode karakterler: Lu, Ll, Lt, Lm, Lo veya Nd.
  • Alt çizgi (_) karakteri.
  • Soru işareti (?) karakteri.

Aşağıdaki listede Unicode kategori açıklamaları yer alır. Daha fazla bilgi için bkz . UnicodeCategory.

  • Lu - Büyük HarfLetter
  • Ll - LowercaseLetter
  • Lt - TitlecaseLetter
  • Lm - Değiştirici
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

Boşluk veya özel karakter içeren bir değişken adı oluşturmak veya görüntülemek için değişken adını küme ayracı ({}) karakterleriyle çevreleyin. Küme ayraçları PowerShell'i değişken adının karakterlerini değişmez değer olarak yorumlamaya yönlendirir.

Özel karakter değişkeni adları şu karakterleri içerebilir:

  • Aşağıdaki özel durumlar dışında herhangi bir Unicode karakteri:
    • Kapanış küme ayracı (}) karakteri (U+007D).
    • Backtick (`) karakteri (U+0060). Backtick, Unicode karakterlerinden kurtulmak için kullanılır, böylece değişmez değer olarak değerlendirilir.

PowerShell, alfasayısal ve özel karakterler içeren , $?, $^ve $_ gibi $$ayrılmış değişkenlere sahiptir. Daha fazla bilgi için bkz . about_Automatic_Variables.

Örneğin, aşağıdaki komut adlı save-itemsdeğişkeni oluşturur. Değişken adı kısa çizgi ({}) özel karakteri içerdiğinden küme ayracı (-) gereklidir.

${save-items} = "a", "b", "c"
${save-items}
a
b
c

Aşağıdaki komut, dizindeki ortam değişkeni tarafından ProgramFiles(x86) temsil edilen alt öğeleri alır.

Get-ChildItem ${env:ProgramFiles(x86)}

Küme ayraçları içeren bir değişken adına başvurmak için, değişken adını ayraç içine alın ve küme ayraçlarından kaçmak için backtick karakterini kullanın. Örneğin, type adlı this{value}is bir değişken oluşturmak için:

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Değişkenler ve kapsam

Varsayılan olarak, değişkenler yalnızca oluşturuldukları kapsamda kullanılabilir.

Örneğin, bir işlevde oluşturduğunuz bir değişken yalnızca işlev içinde kullanılabilir. Betikte oluşturduğunuz bir değişken yalnızca betik içinde kullanılabilir. Betiğin kaynağını noktalı yaparsanız, değişken geçerli kapsama eklenir. Daha fazla bilgi için bkz . about_Scopes.

Değişkenin varsayılan kapsamını değiştirmek için kapsam değiştirici kullanabilirsiniz. Aşağıdaki ifade adlı Computersbir değişken oluşturur. Değişkenin bir betikte veya işlevde oluşturulduğunda bile genel bir kapsamı vardır.

$Global:Computers = "Server01"

Oturum dışında yürütülen herhangi bir betik veya komut için, çağıran oturum kapsamından Using değişken değerleri eklemek için kapsam değiştiricisine ihtiyacınız vardır; böylece oturum dışı kod bunlara erişebilir.

Daha fazla bilgi için bkz . about_Remote_Variables.

Değişkenleri kaydetme

Oluşturduğunuz değişkenler yalnızca bunları oluşturduğunuz oturumda kullanılabilir. Oturumunuzu kapattığınızda kaybolurlar.

Başlattığınız her PowerShell oturumunda değişkeni oluşturmak için değişkeni PowerShell profilinize ekleyin.

Örneğin, her PowerShell oturumunda değişkenin $VerbosePreference değerini değiştirmek için PowerShell profilinize aşağıdaki komutu ekleyin.

$VerbosePreference = "Continue"

Dosyayı notepad.exe gibi bir metin düzenleyicisinde açarak $PROFILE bu komutu PowerShell profilinize ekleyebilirsiniz. PowerShell profilleri hakkında daha fazla bilgi için bkz . about_Profiles.

Değişken: sürücüsü

PowerShell Değişkeni sağlayıcısı, dosya sistemi sürücüsü gibi görünen ve bu sürücü gibi davranan bir Variable: sürücü oluşturur, ancak oturumunuzda değişkenleri ve bunların değerlerini içerir.

Sürücüye Variable: geçmek için aşağıdaki komutu kullanın:

Set-Location Variable:

Sürücüdeki öğeleri ve değişkenleri Variable: listelemek için veya Get-ChildItem cmdlet'lerini Get-Item kullanın.

Get-ChildItem Variable:

Belirli bir değişkenin değerini almak için dosya sistemi gösterimini kullanarak sürücünün adını ve değişkenin adını belirtin. Örneğin, otomatik değişkeni almak $PSCulture için aşağıdaki komutu kullanın.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Sürücü ve PowerShell Değişkeni sağlayıcısı hakkında Variable: daha fazla bilgi görüntülemek için şunu yazın:

Get-Help Variable

Sağlayıcı yolları ile değişken söz dizimi

Bir sağlayıcı yolunun önüne dolar ($) işareti ekleyebilir ve IContentCmdletProvider arabirimini uygulayan herhangi bir sağlayıcının içeriğine erişebilirsiniz.

Aşağıdaki yerleşik PowerShell sağlayıcıları bu gösterimi destekler:

Değişken cmdlet'leri

PowerShell, değişkenleri yönetmek için tasarlanmış bir cmdlet kümesi içerir.

Cmdlet'leri listelemek için şunu yazın:

Get-Command -Noun Variable

Belirli bir cmdlet için yardım almak için şunu yazın:

Get-Help <cmdlet-name>
Cmdlet Adı Açıklama
Clear-Variable Değişkenin değerini siler.
Get-Variable Geçerli konsoldaki değişkenleri alır.
New-Variable Yeni bir değişken oluşturun.
Remove-Variable Bir değişkeni ve değerini siler.
Set-Variable Değişkenin değerini değiştirir.

Ayrıca bkz.