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
PowerShell