Aracılığıyla paylaş


about_Using

Kısa açıklama

Oturumda kullanılacak ad alanlarını belirtmenize olanak tanır.

Uzun açıklama

using deyimi, oturumda kullanılacak ad alanlarını belirtmenize olanak tanır. Ad alanları eklemek .NET sınıflarının ve üyelerinin kullanımını basitleştirir ve betik modüllerinden ve derlemelerden sınıfları içeri aktarmanıza olanak tanır.

using deyimleri, bir betik veya modüldeki diğer deyimlerden önce gelmelidir. Parametreler de dahil olmak üzere, önüne sıkıştırılmamış bir deyim eklenemez.

using deyimi herhangi bir değişken içermemelidir.

using deyimi, değişkenler için Using: kapsam değiştiricisi ile aynı değildir. Daha fazla bilgi için bkz. about_Remote_Variables.

Ad alanı söz dizimi

.NET ad alanından türleri çözümlemek için:

using namespace <.NET-namespace>

Ad alanı belirtmek, türleri kısa adlarına göre başvurmayı kolaylaştırır.

Örnek - Tür adı çözümlemesi için ad alanları ekleme

Aşağıdaki betik, "Hello World" dizesi için şifreleme karması alır.

using namespace System.Text ve using namespace System.IO[UnicodeEncoding]'da System.Text, [Stream] ve [MemoryStream]'de System.IO başvurularını nasıl basitleştirebileceğinizi unutmayın.

using namespace System.Text
using namespace System.IO

[string]$string = "Hello World"
## VALID VALUES ARE "SHA1", "SHA256", "SHA384", "SHA512", "MD5"
[string]$algorithm = "SHA256"

[byte[]]$stringBytes = [UnicodeEncoding]::Unicode.GetBytes($string)

[Stream]$memoryStream = [MemoryStream]::new($stringBytes)
$getFileHashSplat = @{
    InputStream = $memoryStream
    Algorithm   = $algorithm
}
$hashFromStream = Get-FileHash @getFileHashSplat
$hashFromStream.Hash.ToString()

Modül söz dizimi

PowerShell modülünden sınıfları ve numaralandırmaları yüklemek için:

using module <module-name>

<module-name> değeri bir modül adı, tam modül belirtimi veya modül dosyasının yolu olabilir.

<module-name> bir yol olduğunda, yol tam veya göreli olabilir. Göreli yol, using deyimine sahip betikle ilgili olarak çözümlensin.

<module-name> bir ad veya modül belirtimi olduğunda, PowerShell belirtilen modülü PSModulePath arar.

Modül belirtimi, aşağıdaki anahtarlara sahip bir karma tablodur.

  • ModuleName - Gerekli Modül adını belirtir.
  • GUID - İsteğe bağlı Modülün GUID değerini belirtir.
  • Ayrıca aşağıdaki üç anahtardan en az birini belirtmek için Gerekli .
    • ModuleVersion - Modülün kabul edilebilir en düşük sürümünü belirtir.
    • MaximumVersion - Modülün kabul edilebilir en yüksek sürümünü belirtir.
    • RequiredVersion - Modülün tam ve gerekli bir sürümünü belirtir. Bu, diğer Sürüm anahtarlarıyla kullanılamaz.

Import-Module ve #Requires deyimi yalnızca modül tarafından tanımlanan modül işlevlerini, diğer adlarını ve değişkenleri içeri aktarır. Sınıflar ve numaralandırmalar içeri aktarılamaz.

using module deyimi, bir betik modülünün veya ikili modülün kök modülünden (ModuleToProcess) sınıfları ve numaralandırmaları içeri aktarır. İç içe modüllerde veya kök modüle nokta kaynağı olan betiklerde tanımlanan sınıfları veya numaralandırmaları tutarlı bir şekilde içeri aktarmaz. Doğrudan kök modülde modülün dışındaki kullanıcıların kullanımına sunulmasını istediğiniz sınıfları ve numaralandırmaları tanımlayın.

Bir betik modülünün geliştirilmesi sırasında kodda değişiklik yapmak ve ardından Import-Module parametresiyle kullanarak modülün yeni sürümünü yüklemek yaygın bir işlemdir. Bu, yalnızca kök modüldeki işlevlerde yapılan değişiklikler için çalışır. Import-Module iç içe modülleri yeniden yüklemez. Ayrıca, güncelleştirilmiş sınıfları veya numaralandırmaları yüklemenin hiçbir yolu yoktur.

En son sürümü çalıştırdığınızdan emin olmak için yeni bir oturum başlatmanız gerekir. PowerShell'de tanımlanan ve using deyimiyle içeri aktarılan sınıflar ve numaralandırmalar kaldırılamaz.

Örnek - Betik modülünden sınıf yükleme

Bu örnekte, CardGames adlı bir PowerShell betik modülü aşağıdaki sınıfları tanımlar:

  • Deste
  • Kart

Import-Module ve #Requires deyimi yalnızca modül tarafından tanımlanan modül işlevlerini, diğer adlarını ve değişkenleri içeri aktarır. Sınıflar içeri aktarılamaz. using module komutu modülü içeri aktarır ve ayrıca sınıf tanımlarını yükler.

using module CardGames

[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)

Derleme söz dizimi

Aşağıdaki söz dizimi, yürütmenin başında bir derlemedeki .NET türlerini bir betike yükler. Derleme dosyasının tam yolunu kullanmanız gerekir.

using assembly <.NET-assembly-path>

using assembly deyimi, Add-Type cmdlet'ini kullanmaya benzer. Ancak, Add-Type cmdlet'i betiğin yürütülmesinin başlangıcında değil, Add-Type yürütülürken türünü ekler. Daha fazla bilgi için bkz. Add-Type .

Örnek - Derlemeden yükleme türleri

Bu örnek, sınıflarının verileri işlerken kullanılabilmesi için bir derleme yükler. Aşağıdaki betik verileri YAML biçimine dönüştürür.

using assembly './YamlDotNet.dll'
using namespace YamlDotNet

$yamlSerializer = [Serialization.Serializer]::new()

$info = [ordered]@{
  Inventory = @(
    @{ Name = 'Apples' ; Count = 1234 }
    @{ Name = 'Bagels' ; Count = 5678 }
  )
  CheckedAt = [datetime]'2023-01-01T01:01:01'
}

$yamlSerializer.Serialize($info)
Inventory:
- Name: Apples
  Count: 1234
- Name: Bagels
  Count: 5678
CheckedAt: 2023-01-01T01:01:01.0000000