sthModuleScope — функции для работы с элементами в области модуля.

sthModuleScope — это модуль, содержащий четыре функции, предназначенные для работы с элементами в области модуля. Если вы создаете собственные модули, где некоторые из функций и переменных предназначены только для внутреннего использования, то этот модуль может помочь при их диагностике и отладке.

Функция Enter-sthModuleScope позволяет входить в область указанного модуля и выполнять в ней различные команды. Это дает возможность вызывать внутренние функции модуля и обращаться к неэкспортированным в рабочую среду переменным. Во время нахождения в области модуля, строка приглашения отображает имя этого модуля. Для выхода из области модуля используйте команду ‘exit’.

Функция Get-sthModuleScopeFunction возвращает список всех функций модуля, указанного в качестве значения параметра -Module, или модуля, в область которого был совершен вход при помощи функции Enter-sthModuleScope. По умолчанию, Get-sthModuleScopeFunction возвращает все функции — как публичные, так и частные, однако, вы можете указать нужный вам тип функций, используя параметры -PublicOnly и -PrivateOnly.

Функция Get-sthModuleScopeVariable возвращает список всех переменных модуля, указанного в качестве значения параметра -Module,или модуля, в область которого был совершен вход при помощи функции Enter-sthModuleScope. Так же как и предыдущая функция, Get-sthModuleScopeVariable по умолчанию возвращает все переменные — как публичные, так и частные, однако, вы можете указать нужный вам тип переменных, используя параметры -PublicOnly и -PrivateOnly.

Функция Get-sthScopeDepth выводит расположение текущей области относительно глобальной. Значение 0 говорит о том, что вы в данный момент находитесь в глобальной области, значение 1 — о том, что текущая область расположена непосредственно под глобальной, значение 2 — о том, что между текущей областью и глобальной расположена еще одна и так далее.

Вы можете установить модуль sthModuleScope из PowerShell Gallery:

Install-Module sthModuleScope

Также вы можете найти его на GitHub:
https://github.com/sethvs/sthModuleScope

Итак, как с ним работать.

Enter-sthModuleScope

Пример 1.

Команда входит в область модуля с именем ‘module_name’.
Во время нахождения в области модуля, строка приглашения отображает имя этого модуля.
Для выхода из области модуля используется команда ‘exit’.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> exit

PS C:\>

Пример 2.

Команды входят в область модуля, используя объект PSModuleInfo.
Первая команда использует командлет Get-Module для получения объекта PSModuleInfo модуля с именем ‘module_name’.
Вторая команда входит в область модуля ‘module_name’.
Третья команда выходит из области модуля.

PS C:\> $Module = Get-Module -Name 'module_name' -ListAvailable

PS C:\> Enter-sthModuleScope -Module $Module

[module_name] PS C:\>> exit

PS C:\>

Пример 3.

Команда входит в область модуля, получая его имя посредством конвейера.

PS C:\> 'module_name' | Enter-sthModuleScope

[module_name] PS C:\>>

Пример 4.

Команда входит в область модуля, получая объект PSModuleInfo посредством конвейера.

PS C:\> Get-Module module_name -ListAvailable | Enter-sthModuleScope

[module_name] PS C:\>>

Get-sthModuleScopeFunction

Пример 1.

Команды получают все функции, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все функции модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeFunction

Пример 2.

Команды получают все публичные функции, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все публичные функции модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeFunction -PublicOnly

Пример 3.

Команды получают все частные функции, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все частные функции модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeFunction -PrivateOnly

Пример 4.

Команда получает все функции, определенные в модуле ‘module_name’.

PS C:\> Get-sthModuleScopeFunction -Module 'module_name'

Пример 5.

Команда получает все функции, определенные в модуле ‘module_name’, используя объект PSModuleInfo в качестве значения параметра -Module.

PS C:\> $Module = Get-Module -Name 'module_info' -ListAvailable

PS C:\> Get-sthModuleScopeFunction -Module $Module

Пример 6.

Команда выводит все функции, определенные в модуле, получая его имя посредством конвейера.

PS C:\> 'module_name' | Get-sthModuleScopeFunction

Пример 7.

Команда выводит все функции, определенные в модуле, получая объект PSModuleInfo посредством конвейера.

PS C:\> Get-Module -Name 'module_name' -ListAvailable | Get-sthModuleScopeFunction

Get-sthModuleScopeVariable

Пример 1.

Команды получают все переменные, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все переменные модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeVariable

Пример 2.

Команды получают все публичные переменные, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все публичные переменные модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeVariable -PublicOnly

Пример 3.

Команды получают все частные переменные, определенные в модуле ‘module_name’.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает все частные переменные модуля.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthModuleScopeVariable -PrivateOnly

Пример 4.

Команда получает все переменные, определенные в модуле ‘module_name’.

PS C:\> Get-sthModuleScopeVariable -Module 'module_name'

Пример 5.

Команда получает все переменные, определенные в модуле ‘module_name’, используя объект PSModuleInfo в качестве значения параметра -Module.

PS C:\> $Module = Get-Module -Name 'module_info' -ListAvailable

PS C:\> Get-sthModuleScopeVariable -Module $Module

Пример 6.

Команда выводит все переменные, определенные в модуле, получая его имя посредством конвейера.

PS C:\> 'module_name' | Get-sthModuleScopeVariable

Пример 7.

Команда выводит все переменные, определенные в модуле, получая объект PSModuleInfo посредством конвейера.

PS C:\> Get-Module -Name 'module_name' -ListAvailable | Get-sthModuleScopeVariable

Get-sthScopeDepth

Пример 1.

Команда выводит расположение текущей области.
Результат 0 означает, что в данный момент вы находитесь в глобальной области.

PS C:\> Get-sthScopeDepth
0

Пример 2.

Команда Get-sthScopeDepth получает расположение текущей области, будучи вызванной из области модуля.
Первая команда входит в область модуля с именем ‘module_name’.
Вторая команда получает расположение текущей области.
Результат 1 означает, что вы находитесь на одну область ниже глобальной.

PS C:\> Enter-sthModuleScope -Module module_name

[module_name] PS C:\>> Get-sthScopeDepth
1

Пример 3.

Команды получают расположение текущей области при отладке функции.
Первая команда активирует отладку сценариев.
Вторая команда вызывает функцию Get-sthModuleScopeFunction с указанием ‘sthModuleScope’ в качестве значения параметра -Module.
Далее, на первый запрос отладчика указывается ‘Y’, что ведет к продолжению выполнения функции.
На второй запрос отладичка указывается ‘S’, что приводит к приостановке выполнения.
Затем, в командной строке отладчика вызывается функция Get-sthScopeDepth.
Результат 2 означает, что вы находитесь на две области ниже глобальной.

PS C:\> Set-PSDebug -Step
PS C:\> Get-sthModuleScopeFunction -Module sthModuleScope

Continue with this operation?
   1+  >>>> Get-sthModuleScopeFunction -Module sthModuleScope
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y

Continue with this operation?
  26+  >>>> {
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): S

PS C:\>> Get-sthScopeDepth
2

Все модули доступны по ссылке:

https://sergeyvasin.net/modules/


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VK: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s