Aracılığıyla paylaş


about_Using

Kısa açıklama

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

Uzun açıklama

deyimi, using 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.

Deyimler using , 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.

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

deyimi using , değişkenler için kapsam değiştirici ile using: 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, "Merhaba Dünya" dizesi için şifreleme karması alır.

ve içindeki ve içindeki başvurularını nasıl using namespace System.Text basitleştirebileceğinizi [Stream] System.IO[MemoryStream] System.Text [UnicodeEncoding] unutmayın.using namespace System.IO

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>

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

Bir yol olduğunda <module-name> , yol tam veya göreli olabilir. Göreli yol, deyimine sahip betiğin göreli olarak using çözümlenmesidir.

Bir ad veya modül belirtimi olduğunda <module-name> PowerShell, PSModulePath'de belirtilen modülü 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 gerekir .
    • 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, gerekli bir sürümünü belirtir. Bu, diğer Sürüm anahtarlarıyla kullanılamaz.

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

deyimi, using module 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 Force parametresini kullanarak Import-Module 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 bir using deyimle 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:

  • Güverte
  • Kart

Import-Module#requires ve deyimi yalnızca modül tarafından tanımlandığı gibi modül işlevlerini, diğer adlarını ve değişkenlerini 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>

deyimi using assembly , cmdlet'ini Add-Type kullanmaya benzer. Add-Type Ancak, cmdlet betiğin yürütülmesinin başlangıcında değil yürütülürken Add-Type türü 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