Свойство HelpUri объектного типа commandInfo
Этот пост относится к Exchange 2010.
По умолчанию PowerShell загружает семь командлетов в удаленном сеансе в сценарии "import-session *" , что ведет к расходу примерно 30 Мбайт памяти. Любые дополнительно загружаемые файлы справки Exchange вызовут дополнительный расход памяти. Мы увидим этот расход, когда пользователи будут вызывать get-help по нашим командлетам.
Для того, чтобы исправить и предотвратить этот расход памяти, ниже приведены ручные действия, которые нужно выполнить в процессе развертывания Exchange Server. Эти действия не входят в стандартную установку Exchange, потому что файл относится к PowerShell. В этом конкретном случае можно сделать исправление с помощью простого сценария, который помещается в каталог PowerShell и вносит необходимые изменения в объектный тип ComandInfo, удаляя из него свойство HelpUri.
Запускается из ConfigurrePowerShell.cmd:
$path = "$pshome\types.ps1xml"
$xmlDoc = New-Object System.Xml.XmlDocument
$xmlDoc.Load($path)
$nodeList = $xmlDoc.GetElementsByTagName("Type")
$ShouldUpdateTypeFile = $false
foreach ($node in $nodeList)
{
if ($node.Name -eq "System.Management.Automation.CommandInfo")
{
foreach ($child in $node.Members.ChildNodes)
{
if ($child.Name -eq "HelpUri")
{
$removedChild = $node.Members.RemoveChild($child)
$ShouldUpdateTypeFile = $true
}
}
}
}
if($ShouldUpdateTypeFile)
{
$xmlDoc.Save($path)
}
Этот короткий сценарий будет повторен для всех узлов файла types.ps1xml, удаляя свойство HelpUri и экономя примерно 40 Мбайт памяти за счет того, что в начале сеанса не будет загружаться справка. Заметьте, что это не будет иметь отрицательных последствий, другими словами, вы все же сможете использовать get-help.
Перевод: Иван Макаров