Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Umožňuje určit, které obory názvů se v relaci používají.
Dlouhý popis
Příkaz using umožňuje určit, které jmenné prostory se v relaci používají. Přidání jmenných prostorů zjednodušuje použití tříd a členů .NET a umožňuje importovat třídy z modulů skriptů a sestavení.
Příkazy using musí předcházet jakýmkoli jiným příkazům ve skriptu nebo modulu. Žádný nekommentovaný příkaz nemůže předcházet, včetně parametrů.
Příkaz using nesmí obsahovat žádné proměnné.
Příkaz using by neměl být zaměňován s modifikátorem using: scope pro proměnné. Další informace naleznete v dokumentaci about_Remote_Variables.
Syntaxe oboru názvů
Určení oborů názvů .NET, ze kterých se mají překládat typy:
using namespace <.NET-namespace>
Zadání oboru názvů usnadňuje odkazování na typy podle jejich krátkých názvů.
Syntaxe modulu
Načtení tříd z modulu PowerShell:
using module <module-name>
Hodnota <module-name> může být název modulu, úplná specifikace modulu nebo cesta k souboru modulu.
Pokud <module-name> je cesta, může být cesta plně kvalifikovaná nebo relativní. Relativní cesta je vyřešena vzhledem ke skriptu, který obsahuje příkaz using.
Pokud <module-name> je specifikace názvu nebo modulu, PowerShell vyhledá zadaný modul PSModulePath.
Specifikace modulu je hashovací tabulka s následujícími klíči.
-
ModuleName- Povinný Určuje název modulu. -
GUID- Volitelné Určuje identifikátor GUID modulu. -
Je také nutné zadat jeden ze tří níže uvedených klíčů. Tyto klíče nelze použít společně.
-
ModuleVersion– Určuje minimální přijatelnou verzi modulu. -
RequiredVersion– Určuje přesnou požadovanou verzi modulu. -
MaximumVersion– Určuje maximální přijatelnou verzi modulu.
-
Příkaz using module importuje třídy z kořenového modulu (ModuleToProcess) modulu skriptu nebo binárního modulu. Neimportuje konzistentně třídy definované ve vnořených modulech nebo třídy definované ve skriptech, které jsou do modulu získávány tečkami. Třídy, které mají být dostupné uživatelům mimo modul, by měly být definovány v kořenovém modulu.
Během vývoje modulu skriptu je běžné provádět změny v kódu a poté načíst novou verzi modulu pomocí Import-Module parametru Force . To funguje jenom pro změny funkcí v kořenovém modulu.
Import-Module Znovu nenačte žádné vnořené moduly. Také neexistuje způsob, jak načíst žádné aktualizované třídy.
Abyste se ujistili, že používáte nejnovější verzi, musíte modul uvolnit pomocí rutiny Remove-Module .
Remove-Module Odebere kořenový modul, všechny vnořené moduly a všechny třídy definované v modulech. Poté můžete znovu načíst modul a třídy pomocí Import-Module příkazu a using module .
Syntaxe sestavení
Předběžné načtení typů ze sestavení .NET:
using assembly <.NET-assembly-path>
Načtení sestavení předem načte typy .NET z tohoto sestavení do skriptu v době analýzy. To vám umožní vytvořit nové třídy PowerShellu, které používají typy z předem načteného sestavení.
Pokud nevytváříte nové třídy PowerShellu, použijte místo toho rutinu Add-Type . Další informace naleznete v tématu doplňku .
Příklady
Příklad 1 – Přidání oborů názvů pro překlad názvů typů
Následující skript získá kryptografickou hodnotu hash pro řetězec "Hello World".
Všimněte si, jak a using namespace System.Textusing namespace System.IO zjednodušit odkazy na [UnicodeEncoding] in System.Text a [Stream] a na [MemoryStream] in 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()
Příklad 2 – Načtení tříd z modulu skriptu
V tomto příkladu máme modul skriptu PowerShell s názvem CardGames , který definuje následující třídy:
- Karetní hry.Balíček
- Karetní hry.Karta
Import-Module a příkaz #requires importují pouze funkce modulu, aliasy a proměnné definované modulem. Třídy se neimportují. Příkaz using module importuje modul a také načte definice tříd.
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)
Příklad 3 – Načtení tříd ze sestavení
Tento příklad načte sestavení, aby bylo možné jeho třídy použít k vytvoření nových tříd PowerShellu. Následující skript vytvoří novou třídu PowerShell, která je odvozena od třídy 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