Свойство 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.

Марио Тригерос Солорио

Перевод: Иван Макаров

Comments (0)

Skip to main content