PowerShell — это надежная оболочка командной строки и язык сценариев, которые в основном используются для управления компьютерными системами и автоматизации административных задач. Использование операторов — одна из важнейших основ PowerShell. В частности, « с использованием ” играет решающую роль в управлении ресурсами и обеспечении эффективного выполнения кода.
В этой статье будут рассмотрены различные аспекты оператора «using» в PowerShell, включая его синтаксис, назначение и практическое применение.
Цель заявления «использование»
Оператор «using» позволяет указать, какие пространства имен используются в сеансе. Добавляя пространства имен, вы можете импортировать классы из модулей и сборок сценариев и упростить использование классов и членов .NET.
НЕОБХОДИМО использовать заявление
- Оператор «using» должен стоять перед любыми другими операторами сценария или модуля. Ему не могут предшествовать какие-либо незакомментированные операторы, включая параметры.
- Никакие переменные не должны присутствовать в операторе «using».
- Оператор «using» не следует путать с модификатором области видимости «using:» для переменных. Оба они различны по своему назначению и значению.
Синтаксис оператора «using»
Синтаксис оператора «using»:
используя пространство имен < .NET-пространство имен >
Давайте рассмотрим следующий пример:
используя пространство имен System.IO
$ байт '=' [ Файл ] ::ReadAllBytes ( 'D:\c Sharp\Linuxhint1.txt' )
[ Информация о файле ] ::новый ( 'D:\c Sharp\Linuxhint1.txt' )
В приведенном выше коде мы сначала обозначили пространство имен «System.IO». Вторая строка программы, [File]::ReadAllBytes(‘D:c sharpLinuxhint1.txt’), считывает каждый байт из предоставленного файла и помещает его в переменную $Bytes. В третьей строке [FileInfo]::new(‘D:c sharpLinuxhint1.txt’) создает новый экземпляр класса FileInfo и возвращает объект FileInfo.
Оператор «using» для модулей
Мы также можем использовать оператор «using» для загрузки классов модуля.
Синтаксис
используя модуль < имя модуля >
В этом синтаксисе «<имя модуля>», полная спецификация модуля или путь к файлу модуля могут использоваться в качестве значения для «имя модуля».
Вы можете использовать как полный, так и относительный путь, когда «имя-модуля>» является путем. Когда в сценарии присутствует оператор «using», в этом сценарии разрешается относительный путь.
PowerShell ищет предоставленный модуль в PSModulePath, когда «<имя-модуля>» является именем или спецификацией модуля. Следующие ключи составляют хеш-таблицу, которая является спецификацией модуля:
ИмяМодуля - Необходимый. Называет рассматриваемый модуль.
Необязательный идентификатор GUID – указывает GUID модуля.
Кроме того, необходимо указать один из трех ключей, перечисленных ниже.
Версия модуля – Минимально допустимая версия модуля задается через свойство «ModuleVersion».
Максимальная версия – Определяет наивысшую допустимую версию модуля.
Требуемая версия – Определяет точную, необходимую версию модуля, используя «RequiredVersion». Другие ключи версии не могут использоваться с этим.
Корневой модуль (ModuleToProcess) бинарного модуля или модуля скрипта импортируется с помощью объявления «использующего» модуля. Классы, указанные во вложенных модулях или сценариях, которые являются точечными источниками в модуле, импортируются ненадежно. Любые классы, которые вы хотите сделать доступными для пользователей за пределами модуля, должны быть указаны в корневом модуле.
Вот пример:
с помощью модуля PSReadline
Оператор «using» для сборки
Оператор «using» также можно использовать для предварительной загрузки типов из сборки .NET.
Синтаксис
используя сборку < .NET-путь сборки >
В этом синтаксисе при загрузке сборки типы .NET из этой сборки предварительно загружаются в сценарий до его анализа. В результате можно разрабатывать новые классы PowerShell, использующие предварительно загруженные типы сборок.
Посмотрите на пример применения оператора «using» к «сборке»:
используя сборку System.Windows.Forms
В этой команде мы загрузили сборку « Система.Windows.Forms» в PowerShell с помощью инструкции «using».
Оператор «using» для ключей Hashtable
“ Хэш-таблицы — это адаптируемые структуры данных, используемые в PowerShell для различных целей, включая хранение данных конфигурации, предоставление аргументов командлетам и хранение данных в сценариях.
Криптографический хеш для строки « LinuxПодсказка! » получается с помощью следующего скрипта:
используя пространство имен System.Textиспользуя пространство имен System.IO [ нить ] $строка '=' 'Линукс, подсказка!'
[ нить ] $алгоритм '=' 'ША1'
[ байт [ ] ] $stringbytes '=' [ UnicodeEncoding ] ::Unicode.GetBytes ( $строка )
[ Транслировать ] $memystream '=' [ ПамятьПоток ] ::новый ( $stringbytes )
$hashfromstream = Get-FileHash -InputStream $memystream `
-Алгоритм $алгоритм
$hashfromstream .Хэш.ToString ( )
Приведенный выше код PowerShell начинается с импорта пространств имен, необходимых для файловых операций и кодирования. Входная строка и алгоритм хеширования (в данном случае « SHA1 »), затем определяются. Затем входная строка кодируется с использованием « Юникод », чтобы создать массив байтов.
Содержимое массива байтов затем используется для построения « поток памяти ». Хэш-значение из потока памяти вычисляется с использованием предоставленного алгоритма «SHA1» методом « Get-FileHash ” командлет. Скрипт завершается выводом полученного хеш-значения в виде строки на выходе.
Выход
Заключение
“ с использованием ” в PowerShell — это мощный инструмент для указания пространств имен, модулей или сборок. Его синтаксис и назначение обеспечивают стандартизированный и безопасный подход к работе с ресурсами, облегчая их правильную утилизацию и уменьшая дублирование кода.