Запуск процессов через Kaspersky Network Agent в 64-bit окружении
Через задачу типа «Удалённая установка программы» на windows-клиентах, покрытых Kaspersky Network Agent, удобно запускать инсталляторы или скрипты, выполняющие на хосте необходимые администратору настройки. Тут можно решать множество проблем — от умной деинсталляции или переустановки софта, до настройки параметров ОС и приложений.
Однако, здесь кроется одна засада — агент работает от имени SYSTEM, но запускает нагрузку в 32-битном окружении. В плане powershell из-за этого могут быть недоступны часть ресурсов ОС типа веток реестра и всплывать прочие нюансы.
К счастью, великий стаковерфлоу уже больше 10 лет хранит в себе рецепт на этот случай. Он часто пригождается, поэтому положу его и сюда. Просто добавьте простой советский блок кода в начало вашего скрипта, и он будет автоматически перезапущен со всеми параметрами в 64-битном окружении.
#############################################################################
#If Powershell is running the 32-bit version on a 64-bit machine, we
#need to force powershell to run in 64-bit mode .
#############################################################################
if ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
if ($myInvocation.Line) {
&"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile $myInvocation.Line
}else{
&"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -file "$($myInvocation.InvocationName)" $args
}
exit $lastexitcode
}
write-host "Main script body"
#############################################################################
#End
#############################################################################