Sdílet prostřednictvím


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