Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rövid leírás
Lehetővé teszi, hogy jelezze, mely névtereket használja a munkamenet.
Hosszú leírás
Az using utasítás lehetővé teszi annak megadását, hogy mely névtereket használja a rendszer a munkamenetben. A névterek hozzáadása leegyszerűsíti a .NET osztályok és tagok használatát, és lehetővé teszi osztályok importálását szkriptmodulokból és szerelvényekből.
A using utasításoknak a szkriptben vagy modulban lévő többi utasítás előtt kell lenniük. A nem kívánt utasítás nem előzheti meg, beleértve a paramétereket is.
A using utasítás nem tartalmazhat változókat.
Az using utasítást nem szabad összetéveszteni a using: változók hatókör-módosítójával. A további információkért lásd: about_Remote_Variables.
Névtér szintaxisa
NET-névterek megadása, amelyekből a típusokat fel kell oldani:
using namespace <.NET-namespace>
A névtér megadása megkönnyíti a típusok rövid nevük alapján történő hivatkozását.
Modulszintaxis
Osztályok betöltése PowerShell-modulból:
using module <module-name>
A <module-name> értéke lehet modulnév, teljes modulspecifikáció vagy egy modulfájl elérési útja.
Ha <module-name> egy elérési út, az elérési út teljes mértékben minősített vagy relatív lehet. A relatív elérési út feloldása a használandó utasítást tartalmazó szkripthez képest történik.
Ha <module-name> egy név vagy modul specifikációja, a PowerShell megkeresi a megadott modul PSModulePath.
A modulspecifikációk olyan kivonattáblák, amelyek a következő kulcsokat tartalmazzák.
-
ModuleName- Kötelező A modul nevét adja meg. -
GUID- Nem kötelező A modul GUID azonosítóját adja meg. - Az alábbi három kulcs egyikét is meg kell adnia. Ezek a billentyűk nem használhatók együtt.
-
ModuleVersion– A modul minimálisan elfogadható verzióját adja meg. -
RequiredVersion– A modul pontos, kötelező verzióját adja meg. -
MaximumVersion– A modul maximálisan elfogadható verzióját adja meg.
-
Az using module utasítás osztályokat importál egy szkriptmodul vagy bináris modul gyökérmoduljából (ModuleToProcess). Nem importál konzisztensen a beágyazott modulokban definiált osztályokat vagy a pontforrásból származó szkriptekben definiált osztályokat a modulba. Azokat az osztályokat, amelyeket a modulon kívüli felhasználók számára elérhetővé szeretne tenni, a gyökérmodulban kell meghatározni.
A szkriptmodulok fejlesztése során gyakori, hogy módosítja a kódot, majd betölti a modul Import-Module új verzióját a Force paraméterrel. Ez csak a gyökérmodul függvényeinek módosítására használható.
Import-Module nem tölti be újra a beágyazott modulokat. Ezenkívül nincs mód frissített osztályok betöltésére.
Annak érdekében, hogy a legújabb verziót fussa, el kell távolítania a modult a Remove-Module parancsmag használatával.
Remove-Module Eltávolítja a gyökérmodult, az összes beágyazott modult és a modulokban definiált osztályokat. Ezután újratöltheti a modult és az osztályokat az utasítás használatával Import-Moduleusing module .
Szerelvény szintaxisa
Típusok előzetes betöltése egy .NET szerelvényből:
using assembly <.NET-assembly-path>
A szerelvény betöltése előre betölti a .NET típusokat a szerelvényből egy szkriptbe az elemzéskor. Ez lehetővé teszi olyan új PowerShell-osztályok létrehozását, amelyek az előre betöltött szerelvény típusait használják.
Ha nem hoz létre új PowerShell-osztályokat, használja inkább a Add-Type parancsmagot. További információ: Add-Type.
Példák
1. példa – Névterek hozzáadása a typename feloldásához
A következő szkript lekéri a "Hello World" sztring titkosítási kivonatát.
Figyelje meg, hogy a using namespace System.Text és egyszerűsítse a hivatkozásokat az using namespace System.IO in [UnicodeEncoding] és System.Text a .[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()
2. példa – Osztályok betöltése szkriptmodulból
Ebben a példában egy CardGames nevű PowerShell-szkriptmodullal rendelkezünk, amely a következő osztályokat határozza meg:
- CardGames.Deck
- CardGames.Card
Import-Module és az #requires utasítás csak a modul által meghatározott modulfüggvényeket, aliasokat és változókat importálja. Az osztályok nem lesznek importálva. A using module parancs importálja a modult, és betölti az osztálydefiníciókat is.
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)
3. példa – Osztályok betöltése egy szerelvényből
Ez a példa betölt egy szerelvényt, hogy az osztályai új PowerShell-osztályok létrehozásához használhatók. Az alábbi szkript létrehoz egy új PowerShell-osztályt, amely a DirectoryContext osztályból származik.
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