Намеренный сбой модуля при попытке его импорта

#powershell #error-handling #module

#powershell #обработка ошибок #модуль

Вопрос:

Существует ли канонический способ вызвать сбой модуля при попытке его импорта import-module , например, из-за невыполнения определенного предварительного условия.

В настоящее время у меня есть следующие три строки в начале модуля:

 if ( [IntPtr]::Size -ne 4 ) {
    throw '32 bit environment required' 
}
 

Мне интересно, есть ли лучший (или более согласованный способ) предотвратить использование модуля в 64-разрядной среде.

Ответ №1:

Мне интересно, есть ли лучший (или более согласованный способ) предотвратить использование модуля в 64-разрядной среде.

Схема манифеста модуля PowerShell содержит элемент конфигурации только для этого — ProcessorArchitecture !

 New-ModuleManifest -Path My32BitOnlyModule.psd1 -ProcessorArchitecture x86
 

Или, если вам нужно добавить в существующий манифест модуля:

 @{
  # ...
  ProcessorArchitecture = 'x86'
  # ...
}
 

Для 64-разрядных архитектур метка Amd64

Комментарии:

1. Это отличная функция. Если бы у меня было очень специфическое предварительное условие, связанное с доменом приложения, должен ли я по-прежнему использовать throw ?

2. throw изнутри a .psm1 во время импорта кажется мне вполне разумной временной остановкой, да! 🙂