Deployer Kaspersky Endpoint Security Cloud avec PowerShell
- Mise à jour le 17 décembre 2020
J'ai eu à déployer Kaspersky Endpoint Security Cloud en remplacement d'un Kaspersky Enpoint Security standard. Pour réaliser cela j'ai utilisé l'outil Microsoft psexec, le script batch de Kaspersky et un script PowerShell.
Partage de fichiers
Un partage réseau accessible sera utilisé (le répertoire SYSVOL peut faire l'affaire) afin que l'on partage l'installer KESC.exe ainsi que le fichier batch deploy.bat.
- Depuis un controlleur de domaine on pourra utiliser le partage
NETLOGONqui se trouve dansc:\Windows\SYSVOL\sysvol\domain.fqdn\scriptsde chaque DC :
- On y copiera notre paquet d'installation et notre script deploy.bat :
Script Batch
- Le fichier batch écrira deux clés de registre:
HKLM\Software\KasperskyLab\KESCloud\NetAgentVersionoù je renseigne la version de mes installations (ici la 2).HKLM\Software\KasperskyLab\KESCloud\AutoPackageInstalled, indique que l'installation a été faite et évite ainsi de re-déployer le package sur une machine.
Je me suis inspiré du script présent ici : https://support.kaspersky.com/13693.
Instructions
Modifier la ligne en rouge en fonction de son partage de fichiers.
deploy.bat
@echo off
REM ECHO ON
REM if HKLM\Software\KasperskyLab missing, create Key
REG QUERY HKLM\Software\KasperskyLab
IF %ERRORLEVEL% == 1 REG ADD HKLM\Software\KasperskyLab
REG QUERY HKLM\Software\KasperskyLab\KESCloud
IF %ERRORLEVEL% == 1 REG ADD HKLM\Software\KasperskyLab\KESCloud
REM If HKLM\Software\KasperskyLab\KESCloud\NetAgent DWORD equal to 1 KESC switch else go to NETAGENT switch
REG QUERY HKLM\Software\KasperskyLab\KESCloud /v NetAgentVersion | FIND "0x2"
IF %ERRORLEVEL% == 1 GOTO INSTALL
GOTO END
:INSTALL
ECHO Installing
REG ADD HKLM\Software\KasperskyLab\KESCloud /v NetAgentVersion /t REG_DWORD /f /D 2
\\std.local\netlogon\KAV\KESC.exe -s
REG ADD HKLM\Software\KasperskyLab\KESCloud /v AutoPackageInstalled /t REG_DWORD /f /D 1
:END
ECHO Finish
set /p=Hit Enter to continue...
Script PowerShell
Le script PowerShell que j'ai utilisé et exécuté depuis un AD, vérifie la présence de l'ordinateur (test avec un simple ping). Si une réponse parvient alors l'utilitaire psexec.exe sera utilisé pour exécuter le batch deploy.bat sur l'ordinateur cible.
Instructions
La aussi il faudra l'adapter en modifiant les variables suivantes :
$computers: modifier simplement la liste des noms d'ordinateurs à migrer$domain: nom du domaine Active Directory$user: le nom d'un administrateur Active Directory$password: mot de passe de l'$user définit juste au dessus$share: partage qui contient le batch deploy.bat$psexec: chemin complet de l'exécutable psexec.exe
Deploy.ps1
###########################
# author : shebangthedolphins.net
# version : 1.2
# date : 2020.12
# role : deploy Kaspersky Endpoint Security Cloud
# other : launch it with domain admin user rights.
# updates :
# - 1.0 (2018/02) : First version
# - 1.1 (2020/09) : Add variables and comments
# - 1.2 (2020/12) : Updates, variables corrections
#VARIABLES
$computers = @("COMPUTER15","COMPUTER85","COMPUTER86","COMPUTER98","COMPUTER16","COMPUTER19")
$domain = "std.local"
$user = "administrator"
$password = "Mypassword"
$share = "\\std.local\netlogon\KAV\"
$psexec = "c:\Users\std\psexec.exe"
Foreach ($computer in $computers)
{
Write-Host "Work on $computer"
ping -n 1 "$computer" | findstr "TTL" #check if computer is available
if ($LASTEXITCODE -eq '0') #if yes, let's start deployment
{
& "$psexec" "/accepteula" "\\$computer" "-u" "$domain\$user" "-p" "$password" "$share\deploy.bat"
#Start-Process -FilePath ($psexec) -ArgumentList ("/accepteula" + " \\" + $computer + " -u " + $domain + "\" + $user + " -p " + $password + " " + $share + "\" + "deploy.bat") # -Wait
}
else
{
Write-Host "$computer cannot be reached"
}
}