about_Using
Deskripsi singkat
Memungkinkan Anda menentukan namespace layanan yang akan digunakan dalam sesi.
Deskripsi panjang
Pernyataan ini using
memungkinkan Anda menentukan namespace layanan untuk digunakan dalam sesi.
Menambahkan namespace layanan 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 using
tidak sama dengan pengubah using:
cakupan untuk variabel. Untuk informasi selengkapnya, lihat about_Remote_Variables.
Sintaks namespace
Untuk mengatasi jenis dari namespace .NET:
using namespace <.NET-namespace>
Menentukan namespace membuatnya lebih mudah untuk mereferensikan jenis dengan nama pendeknya.
Contoh - Menambahkan namespace untuk resolusi nama jenis
Skrip berikut mendapatkan hash kriptografi untuk string "Halo Dunia".
Perhatikan bagaimana using namespace System.Text
dan using namespace System.IO
menyederhanakan referensi ke [UnicodeEncoding]
dalam System.Text
dan [Stream]
[MemoryStream]
di 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()
Sintaks modul
Untuk memuat kelas dan enumerasi 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 memiliki using
pernyataan .
Ketika <module-name>
adalah spesifikasi nama atau modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.
Spesifikasi modul adalah hashtable yang memiliki kunci berikut.
ModuleName
- Diperlukan Menentukan nama modul.GUID
- Opsional Menentukan GUID modul.- Diperlukan juga untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini.
ModuleVersion
- Menentukan versi minimum modul yang dapat diterima.MaximumVersion
- Menentukan versi maksimum modul yang dapat diterima.RequiredVersion
- Menentukan versi modul yang tepat dan diperlukan. Ini tidak dapat digunakan dengan kunci Versi lainnya.
Import-Module
#requires
dan pernyataan hanya mengimpor fungsi modul, alias, dan variabel, seperti yang didefinisikan oleh modul. Kelas dan enumerasi tidak diimpor.
Pernyataan mengimpor using module
kelas dan enumerasi dari modul akar (ModuleToProcess
) modul skrip atau modul biner. Ini tidak secara konsisten mengimpor kelas atau enumerasi yang ditentukan dalam modul berlapis atau dalam skrip yang bersumber titik ke dalam modul akar. Tentukan kelas dan enumerasi yang ingin Anda sediakan untuk pengguna di luar modul langsung di modul akar.
Selama pengembangan modul skrip, umumnya untuk membuat perubahan pada kode lalu memuat versi baru modul menggunakan Import-Module
dengan 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 atau enumerasi yang diperbarui.
Untuk memastikan bahwa Anda menjalankan versi terbaru, Anda harus memulai sesi baru.
Kelas dan enumerasi yang ditentukan di PowerShell dan diimpor dengan using
pernyataan tidak dapat dibongkar.
Contoh - Memuat kelas dari modul skrip
Dalam contoh ini, modul skrip PowerShell bernama CardGames menentukan kelas berikut:
- Dek
- Kartu
Import-Module
#requires
dan pernyataan 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
[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)
Sintaks rakitan
Sintaks berikut memuat jenis .NET dari rakitan ke dalam skrip di awal eksekusi. Anda harus menggunakan jalur yang sepenuhnya memenuhi syarat ke file assembly.
using assembly <.NET-assembly-path>
Pernyataan using assembly
ini mirip dengan menggunakan Add-Type
cmdlet.
Namun, Add-Type
cmdlet menambahkan jenis pada saat dijalankan Add-Type
, bukan pada awal eksekusi skrip. Untuk informasi selengkapnya, lihat Add-Type.
Contoh - Memuat jenis dari rakitan
Contoh ini memuat rakitan sehingga kelasnya dapat digunakan saat memproses data. Skrip berikut mengonversi data menjadi format YAML.
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