优化PowerShell模块导入

Eli*_*Eli 5 powershell optimization powershell-2.0

我目前有一个PowerShell脚本,用于复杂的自动Exchange邮箱管理.有时,脚本将同时运行20-40个实例.脚本本身不需要花费太多时间来运行; 但是,该脚本需要ActiveDirectory模块,ServerManager模块和Exchange 2010 PS-snapin.只运行一个脚本实例时,加载这些模块和管理单元需要几秒钟.一旦有多个脚本实例在运行,这当然是复杂的.由于它试图同时加载这些模块20-40次,因此最终朝着极高的资源使用方向前进.

问题是:

有没有办法要么将3个必需的模块加载到内存中,可以这么说,还是有其他方法来优化这个,任何人都可以想到,每次PowerShell的新实例都不需要加载这3个模块脚本被调用?

以下是简化脚本的基础知识(不包括:函数体,if语句,错误处理) - 如果您需要添加任何部分,请告诉我

代码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
Run Code Online (Sandbox Code Playgroud)

Sha*_*evy 5

您可以尝试从每个模块加载所需的cmdlet.关于AD模块,您可以通过禁用默认AD驱动器的加载来加速其加载.某些AD操作也可通过Exchange命令获得,也许您可​​以跳过AD模块.顺便说一下,不支持加载E2010管理单元.

$env:ADPS_LoadDefaultDrive = 0
Import-Module ActiveDirectory -Cmdlet Get-ADUser,Set-ADUser
Import-Module ServerManager ...
Add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
Run Code Online (Sandbox Code Playgroud)