В настоящее время у меня есть сценарий PowerShell, который используется для комплексного автоматизированного управления почтовыми ящиками Exchange. Время от времени скрипт будет запускать 20-40 экземпляров одновременно. Тело самого сценария не требует много времени для запуска; однако для сценария требуются модуль ActiveDirectory, модуль ServerManager и PS-оснастка Exchange 2010. Загрузка этих модулей и оснасток занимает несколько секунд, когда запущен только 1 экземпляр скрипта. Это, конечно, усложняется, если запущено несколько экземпляров скрипта. Это приводит к чрезмерному использованию ресурсов, так как он пытается загрузить эти модули 20-40 раз одновременно.
Вопрос такой:
Есть ли какой-либо способ сохранить 3 требуемых модуля в памяти, если можно так выразиться, или есть какой-то другой способ оптимизировать этот процесс, о котором каждый может подумать, что он не потребует загрузки этих 3 модулей каждый раз, когда создается новый экземпляр скрипта PowerShell вызывается?
Вот основы упрощенного скрипта (без: тел функций, операторов if, обработки ошибок) - Дайте мне знать, если вам нужен какой-либо добавленный раздел
КОД СНИПИТ:
param($ARG1,$ARG2,$ARG3) # Grab arguments from command line
# Load Modules
Import-Module ActiveDirectory
Import-Module ServerManager
Add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
# Pass Arguments to Variables
$username = $ARG1
# Create Functions
function checkValidADUser {}
function checkOldMailbox {}
function chooseMailstore {}
function createMailbox {}
# Run Functions
checkValidADUser $username
checkOldMailbox $username
chooseMailstore $username
createMailbox $username $mailstore