Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
Oturumda hangi ad alanlarının kullanıldığını belirtmenizi sağlar.
Uzun açıklama
deyimi using , oturumda hangi ad alanlarının kullanılacağı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 derlemelerinden 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.
İfade using , değişkenler için kapsam değiştiricisi using: ile karıştırılmamalıdır. Daha fazla bilgi için bkz. about_Remote_Variables.
Ad alanı söz dizimi
Türlerin çözümleneceği .NET ad alanlarını belirtmek için:
using namespace <.NET-namespace>
Ad alanı belirtmek, türleri kısa adlarına göre başvurmayı kolaylaştırır.
Modül söz dizimi
Bir PowerShell modülünden sınıfları 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 deyimini içeren betike göre çözümlenir.
<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 birini belirtmeniz gerekir . Bu anahtarlar birlikte kullanılamaz.
-
ModuleVersion- Modülün kabul edilebilir en düşük sürümünü belirtir. -
RequiredVersion- Modülün tam ve gerekli bir sürümünü belirtir. -
MaximumVersion- Modülün kabul edilebilir en yüksek sürümünü belirtir.
-
deyimi using module , bir komut dosyası modülünün veya ikili modülün kök modülünden (ModuleToProcess) sınıfları içe aktarır. İç içe modüllerde tanımlanan sınıfları veya modüle nokta kaynaklı komut dosyalarında tanımlanan sınıfları tutarlı bir şekilde içe aktarmaz. Modülün dışındaki kullanıcılar tarafından kullanılabilir olmasını istediğiniz sınıflar kök modülde tanımlanmalıdır.
Bir komut dosyası modülünün geliştirilmesi sırasında, kodda değişiklikler yapmak ve ardından Import-Module parametresiyle modülün yeni sürümünü yüklemek yaygın bir durumdur. Bu, yalnızca kök modüldeki işlevlerde yapılan değişiklikler için çalışır.
Import-Module iç içe geçmiş modülleri yeniden yüklemez. Ayrıca, güncellenmiş sınıfları yüklemenin bir yolu yoktur.
En son sürümü çalıştırdığınızdan emin olmak için cmdlet'i Remove-Module kullanarak modülü kaldırmanız gerekir.
Remove-Module Kök modülü, iç içe geçmiş tüm modülleri ve modüllerde tanımlanan tüm sınıfları kaldırır. Daha sonra ve deyimini kullanarak Import-Module modülü ve sınıfları using module yeniden yükleyebilirsiniz.
Derleme söz dizimi
Bir .NET derlemesinden türleri önceden yüklemek için:
using assembly <.NET-assembly-path>
Bir derlemenin yüklenmesi, bu derlemeden .NET türlerini ayrıştırma zamanında bir komut dosyasına önceden yükler. Bu, önceden yüklenmiş derlemedeki türleri kullanan yeni PowerShell sınıfları oluşturmanıza olanak tanır.
Yeni PowerShell sınıfları oluşturmuyorsanız, bunun yerine cmdlet'i Add-Type kullanın. Daha fazla bilgi için bkz. Add-Type .
Örnekler
Örnek 1 - typename çözümlemesi için ad alanları ekleme
Aşağıdaki betik, "Hello World" dizesi için şifreleme karması alır.
ve in using namespace System.Text ve using namespace System.IO ve in [UnicodeEncoding]System.Textbaşvurularını [Stream] nasıl [MemoryStream]System.IO basitleştirdiğine dikkat edin.
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)
$hashfromstream = Get-FileHash -InputStream $memorystream `
-Algorithm $algorithm
$hashfromstream.Hash.ToString()
Örnek 2 - Bir betik modülünden sınıfları yükleme
Bu örnekte, aşağıdaki sınıfları tanımlayan CardGames adlı bir PowerShell betik modülümüz var:
- Kart Oyunları.Deste
- Kart Oyunları.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çe aktarılmaz.
using module komutu modülü içeri aktarır ve ayrıca sınıf tanımlarını yükler.
using module CardGames
using namespace CardGames
[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)
Örnek 3 - Bir montajdan sınıfları yükleme
Bu örnek, sınıflarının yeni PowerShell sınıfları oluşturmak için kullanılabilmesi için bir derleme yükler. Aşağıdaki betik, DirectoryContext sınıfından türetilen yeni bir PowerShell sınıfı oluşturur.
using assembly 'C:\Program Files\PowerShell\7\System.DirectoryServices.dll'
using namespace System.DirectoryServices.ActiveDirectory
class myDirectoryClass : System.DirectoryServices.ActiveDirectory.DirectoryContext
{
[DirectoryContext]$domain
myDirectoryClass([DirectoryContextType]$ctx) : base($ctx)
{
$this.domain = [DirectoryContext]::new([DirectoryContextType]$ctx)
}
}
$myDomain = [myDirectoryClass]::new([DirectoryContextType]::Domain)
$myDomain
domain Name UserName ContextType
------ ---- -------- -----------
System.DirectoryServices.ActiveDirectory.DirectoryContext Domain