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 zadat obory názvů, které se mají použít v relaci.
Dlouhý popis
Příkaz using umožňuje zadat obory názvů, které se mají použít v relaci.
Přidávání oborů názvů zjednodušuje používání tříd a členů rozhraní .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 není stejný jako Using: modifikátor oboru pro proměnné. Další informace najdete v tématu about_Remote_Variables.
Syntaxe oboru názvů
Překlad typů z oboru názvů .NET:
using namespace <.NET-namespace>
Zadání oboru názvů usnadňuje odkazování na typy podle jejich krátkých názvů.
Příklad – Přidání oborů názvů pro překlad názvů typename
Následující skript získá kryptografickou hodnotu hash pro řetězec "Hello World".
Všimněte si, jak using namespace System.Text a using namespace System.IO zjednodušit odkazy na [UnicodeEncoding] in System.Text a [Stream][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)
$getFileHashSplat = @{
InputStream = $memoryStream
Algorithm = $algorithm
}
$hashFromStream = Get-FileHash @getFileHashSplat
$hashFromStream.Hash.ToString()
Syntaxe modulu
Načtení tříd a výčtů z modulu PowerShellu:
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 se překládá vzhledem ke skriptu, který má příkaz using .
Pokud <module-name> se jedná o název nebo specifikaci modulu, PowerShell vyhledá zadaný modul v cestě PSModulePath .
Specifikace modulu je hashovatelná tabulka s následujícími klíči.
-
ModuleName- Povinný argument Určuje název modulu. -
GUID- Volitelné určuje identifikátor GUID modulu. - Je také povinné zadat aspoň jeden ze tří následujících klíčů.
-
ModuleVersion– Určuje minimální přijatelnou verzi modulu. -
MaximumVersion– Určuje maximální přijatelnou verzi modulu. -
RequiredVersion– Určuje přesnou požadovanou verzi modulu. Tuto možnost nelze použít s jinými klíči verze.
-
Import-Module
#Requires a příkaz importuje pouze funkce modulu, aliasy a proměnné, jak je definováno modulem. Třídy a výčty se neimportují.
Příkaz using module importuje třídy a výčty z kořenového modulu (ModuleToProcess) modulu skriptu nebo binárního modulu. Konzistentně neimportuje třídy nebo výčty definované v vnořených modulech nebo ve skriptech, které jsou do kořenového modulu dot-source. Definujte třídy a výčty, které chcete zpřístupnit uživatelům mimo modul přímo v kořenovém modulu.
Při vývoji modulu skriptu je běžné provádět změny kódu a pak načíst novou verzi modulu pomocí Import-Module parametru Force . To funguje jenom pro změny funkcí v kořenovém modulu.
Import-Module nenačítá žádné vnořené moduly. Neexistuje také způsob, jak načíst žádné aktualizované třídy nebo výčty.
Abyste měli jistotu, že používáte nejnovější verzi, musíte spustit novou relaci.
Třídy a výčty definované v PowerShellu a importované pomocí using příkazu se nedají uvolnit.
Příklad – Načtení tříd z modulu skriptu
V tomto příkladu modul skriptu PowerShellu s názvem CardGames definuje následující třídy:
- Paluba
- Karta
Import-Module
#Requires a příkaz importuje pouze funkce modulu, aliasy a proměnné, jak je definováno modulem. Třídy se neimportují. Příkaz using module naimportuje modul a také načte definice tříd.
using module CardGames
[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)
Syntaxe sestavení
Následující syntaxe načte typy .NET ze sestavení do skriptu na začátku spuštění. Musíte použít plně kvalifikovanou cestu k souboru sestavení.
using assembly <.NET-assembly-path>
Příkaz using assembly se podobá použití rutiny Add-Type .
Rutina Add-Type ale přidá typ v době, kdy Add-Type se spustí, a ne na začátku spuštění skriptu. Další informace naleznete v tématu Typ doplňku.
Příklad – Načtení typů ze sestavení
Tento příklad načte sestavení, aby se jeho třídy mohly použít při zpracování dat. Následující skript převede data do formátu 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