← на главную

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

Избранное: мои фото- и видеоработы, забрать своё из облаков, КЭНК, все эти ваши компьютеры
Навигация: все теги, календарь

Запуск процессов через 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
#############################################################################

Ссылочки на исходники