Код Powershell .net замедлен с момента обновления MS-Security, апрель 2019 г. - PullRequest
3 голосов
/ 13 июня 2019

С мая 2019 г. накопительный пакет безопасности для Windows Server 2016 доступ к объекту .net через powershell очень медленный, когда в powershell установлена ​​точка останова переменной powershell.

Например, скорость загрузки [System.Environment] увеличивается более чем в десять раз с точкой останова, не установленной.

Так как это происходит только с последними установленными обновлениями безопасности (май 2019 (KB4494440) или июнь 2019 (KB4503267)), я думаю, что это связано с обновлением.

До сих пор устранял некоторые проблемы с procmon. Для меня это выглядит так, что когда установлена ​​точка PSBreakpoint, при множественном чтении из HKLM\System\CurrentControlSet\Control\Session Manager\Environment\__PSLockdownPolicy невозможно воспроизвести это, когда не установлена ​​точка останова, и не может воспроизвести этот эффект без одного из установленных обновлений.

Следующий код PowerShell работает более чем в 10 раз медленнее, когда я устанавливаю накопительный пакет обновления для системы безопасности Май / июнь 2019 года на моем Windows Server 2016.

$measure1 = measure-command{
  foreach($i in 1..10000){
    [System.Environment]
  }
} |select -ExpandProperty TotalSeconds

Set-PSBreakpoint -Variable "test" -Action {$null}

$measure2 = measure-command{
  foreach($i in 1..10000){
    [System.Environment]
  }
} |select -ExpandProperty TotalSeconds

Write-Host "First measurement took $measure1 seconds, Second measurement took $measure2"

>>First measurement took 0.0482474 seconds, Second measurement took 0.8722697

Может ли кто-нибудь также наблюдать это поведение?

Есть ли у вас какие-либо предложения для решения этой проблемы?

Это связано с некоторыми настройками или установленным программным обеспечением?

...