Sdílet prostřednictvím


o používání

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 modifikátor oboru using: pro proměnné. Další informace naleznete v dokumentaci 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šují odkazy na [UnicodeEncoding] v System.Text a [Stream] a [MemoryStream] v 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> je specifikace názvu nebo modulu, PowerShell vyhledá zadaný modul PSModulePath.

Specifikace modulu je hashovatelná 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é Povinné zadat aspoň jeden z následujících tří 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 a příkaz #requires importují pouze funkce modulu, aliasy a proměnné definované 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 s parametrem 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í příkazu using nelze 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:

  • paluby
  • 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

[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 se Add-Type spustí, a ne na začátku spuštění skriptu. Další informace naleznete v tématu 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