Сведения об использовании

КРАТКОЕ ОПИСАНИЕ

Позволяет указать, какие пространства имен используются в сеансе.

ПОДРОБНОЕ ОПИСАНИЕ

Инструкция using позволяет указать, какие пространства имен используются в сеансе. Добавление пространств имен упрощает использование классов и членов .NET и позволяет импортировать классы из модулей скриптов и сборок.

Эти using инструкции должны быть получены перед любыми другими инструкциями в скрипте.

Оператор using не следует путать с модификатором using: области для переменных. Дополнительные сведения см. в разделе about_Remote_Variables.

Синтаксис

Чтобы указать .NET пространства имен, из которых необходимо разрешить типы:

using namespace <.NET-namespace>

Чтобы загрузить классы из модуля PowerShell, выполните следующие действия.

using module <module-name>

Чтобы предварительно загрузить типы из сборки .NET, выполните следующие действия.

using assembly <.NET-assembly-path>

Указание пространства имен упрощает ссылку на типы по их коротким именам.

Загрузка предварительной загрузки сборки .NET типов из этой сборки в скрипт во время синтаксического анализа. Это позволяет создавать новые классы PowerShell, использующие типы из предварительно загруженной сборки.

Если вы не создаете новые классы PowerShell, используйте Add-Type командлет. Дополнительные сведения см. в разделе "Тип надстройки".

Примеры

Пример 1. Добавление пространств имен для разрешения имен

Следующий скрипт получает криптографический хэш для строки "Hello World".

Обратите внимание на using namespace System.Text то, как и using namespace System.IO как упростить ссылки на [UnicodeEncoding] вход System.Text и [Stream] в [MemoryStream]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()

Пример 2. Загрузка классов из модуля скрипта

В этом примере у нас есть модуль скрипта PowerShell с именем CardGames , который определяет следующие классы:

  • CardGames.Deck
  • CardGames.Card

Import-Module#requires и инструкция импортирует только функции модуля, псевдонимы и переменные, как определено модулем. Классы не импортируются. Команда using module импортирует модуль, а также загружает определения классов.

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)

Пример 3. Загрузка классов из сборки

В этом примере загружается сборка, чтобы его классы можно было использовать для создания новых классов PowerShell. Следующий скрипт создает новый класс PowerShell, производный от класса 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