Сведения об использовании
КРАТКОЕ ОПИСАНИЕ
Позволяет указать, какие пространства имен используются в сеансе.
ПОДРОБНОЕ ОПИСАНИЕ
Инструкция 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