about_Using
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