В настоящее время у меня есть сценарий PowerShell, который используется для сложного автоматизированного управления почтовыми ящиками Exchange. Иногда скрипт будет запускать 20-40 экземпляров одновременно. Сам сценарий не требует много времени для запуска; однако для сценария требуется модуль ActiveDirectory, модуль ServerManager и оснастка Exchange 2010 PS. Загрузка этих модулей и оснасток занимает несколько секунд, если запущен только 1 экземпляр скрипта. Это, конечно, усугубляется, когда выполняется несколько экземпляров скрипта. Это приводит к чрезвычайно высокому использованию ресурсов, поскольку он пытается загрузить эти модули 20-40 раз одновременно.
Вопрос заключается в следующем:
Есть ли способ сохранить 3 требуемых модуля загруженными в память, так сказать, или есть какой-то другой способ оптимизировать это, о котором может подумать любой, который не потребует загрузки эти 3 модуля каждый раз, когда вызывается новый экземпляр сценария PowerShell?
Вот упрощенные основы сценария (без: тел функций, операторов if, обработки ошибок) - Сообщите мне, если вам нужно добавить какой-либо раздел
CODE SNIPPIT:
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