gpt4 book ai didi

optimization - 优化 PowerShell 模块导入

转载 作者:行者123 更新时间:2023-12-03 15:59:49 25 4
gpt4 key购买 nike

我目前有一个用于复杂自动化 Exchange 邮箱管理的 PowerShell 脚本。有时,脚本会同时运行 20-40 个实例。脚本本身的运行时间并不长;但是,该脚本需要 ActiveDirectory 模块、ServerManager 模块和 Exchange 2010 PS-snapin。当只有 1 个脚本实例正在运行时,加载这些模块和管理单元需要几秒钟的时间。一旦有多个脚本实例运行,这当然会更加复杂。这最终使盒子朝着极高的资源使用方向发展,因为它试图同时加载这些模块 20-40 次。

问题是这样的:

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

这是简化脚本的基础知识(不包括:函数体、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

最佳答案

您可以尝试仅从每个模块加载所需的 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

关于optimization - 优化 PowerShell 模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com