Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
Memungkinkan Anda menunjukkan namespace mana yang digunakan dalam sesi.
Deskripsi panjang
Pernyataan ini using memungkinkan Anda menentukan namespace mana yang digunakan dalam sesi. Menambahkan namespace menyederhanakan penggunaan kelas dan anggota .NET dan memungkinkan Anda mengimpor kelas dari modul dan rakitan skrip.
Pernyataan using harus datang sebelum pernyataan lain dalam skrip atau modul. Tidak ada pernyataan yang tidak berkomentar yang dapat mendahuluinya, termasuk parameter.
Pernyataan using tidak boleh berisi variabel apa pun.
Pernyataan tidak using boleh disamakan dengan pengubah cakupan using: untuk variabel. Untuk informasi selengkapnya, lihat about_Remote_Variables.
Sintaks namespace
Untuk menentukan namespace .NET dari mana akan menyelesaikan jenis:
using namespace <.NET-namespace>
Menentukan namespace membuatnya lebih mudah untuk mereferensikan jenis dengan nama pendeknya.
Sintaks modul
Untuk memuat kelas dari modul PowerShell:
using module <module-name>
Nilai <module-name> dapat berupa nama modul, spesifikasi modul lengkap, atau jalur ke file modul.
Ketika <module-name> adalah jalur, jalur dapat sepenuhnya memenuhi syarat atau relatif. Jalur relatif diselesaikan relatif terhadap skrip yang berisi pernyataan penggunaan.
Saat <module-name> adalah spesifikasi nama atau modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.
Spesifikasi modul adalah tabel hash yang memiliki kunci berikut.
-
ModuleName- Diperlukan Menentukan nama modul. -
GUID- Opsional Menentukan GUID modul. - Ini juga Diperlukan untuk menentukan salah satu dari tiga tombol di bawah ini. Kunci ini tidak dapat digunakan bersama.
-
ModuleVersion- Menentukan versi minimum modul yang dapat diterima. -
RequiredVersion- Menentukan versi modul yang tepat dan diperlukan. -
MaximumVersion- Menentukan versi maksimum modul yang dapat diterima.
-
Pernyataan mengimpor using module kelas dari modul akar (ModuleToProcess) dari modul skrip atau modul biner. Itu tidak secara konsisten mengimpor kelas yang ditentukan dalam modul berlapis atau kelas yang ditentukan dalam skrip yang bersumber titik ke dalam modul. Kelas yang Anda inginkan tersedia untuk pengguna di luar modul harus ditentukan dalam modul root.
Selama pengembangan modul skrip, adalah umum untuk membuat perubahan pada kode kemudian memuat versi baru modul menggunakan Import-Module parameter Force . Ini hanya berfungsi untuk perubahan pada fungsi dalam modul akar.
Import-Module tidak memuat ulang modul berlapis apa pun. Selain itu, tidak ada cara untuk memuat kelas yang diperbarui.
Untuk memastikan bahwa Anda menjalankan versi terbaru, Anda harus membongkar modul menggunakan Remove-Module cmdlet.
Remove-Module menghapus modul root, semua modul berlapis, dan kelas apa pun yang ditentukan dalam modul. Kemudian Anda dapat memuat ulang modul dan kelas menggunakan Import-Module dan pernyataan using module .
Sintaks rakitan
Untuk memuat jenis pra-muat dari rakitan .NET:
using assembly <.NET-assembly-path>
Memuat rakitan memuat jenis .NET dari rakitan tersebut ke dalam skrip pada waktu penguraian. Ini memungkinkan Anda membuat kelas PowerShell baru yang menggunakan jenis dari rakitan yang dimuat sebelumnya.
Jika Anda tidak membuat kelas PowerShell baru, gunakan cmdlet sebagai Add-Type gantinya. Untuk informasi selengkapnya, lihat Add-Type.
Contoh
Contoh 1 - Menambahkan namespace untuk resolusi typename
Skrip berikut mendapatkan hash kriptografi untuk string "Halo Dunia".
Perhatikan bagaimana dan using namespace System.Text menyederhanakan referensi ke using namespace System.IO dalam [UnicodeEncoding] dan System.Text dan ke [Stream] .[MemoryStream]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)
$hashfromstream = Get-FileHash -InputStream $memorystream `
-Algorithm $algorithm
$hashfromstream.Hash.ToString()
Contoh 2 - Muat kelas dari modul skrip
Dalam contoh ini, kami memiliki modul skrip PowerShell bernama CardGames yang mendefinisikan kelas berikut:
- Permainan Kartu.Dek
- Permainan Kartu.Kartu
Import-Module dan pernyataan #requires hanya mengimpor fungsi modul, alias, dan variabel, seperti yang didefinisikan oleh modul. Kelas tidak diimpor. Perintah using module mengimpor modul dan juga memuat definisi kelas.
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)
Contoh 3 - Memuat kelas dari rakitan
Contoh ini memuat rakitan sehingga kelasnya dapat digunakan untuk membuat kelas PowerShell baru. Skrip berikut membuat kelas PowerShell baru yang berasal dari kelas DirectoryContext .
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