Cerrar
InicioIntuneMicrosoft Intune: Actualización del Cliente VPN de Fortinet

Microsoft Intune: Actualización del Cliente VPN de Fortinet

En este articulo voy a mostrar como podéis actualizar el cliente VPN de Fortinet utilizando Intune, tirando de algo de “imaginación” con PowerShell. No es nada complejo, simplemente que como Fortinet sino tienes su solución de EMS no tiene un “camino directo” para actualizar los clientes VPN. Siendo así, tenemos que buscarnos la vida para actualizar los equipos de nuestros usuarios y no tener que hacerlo de forma manual.

Para poder completar el proceso, debemos tener la siguiente información:

  • Que clave de registro debemos buscar y eliminar (evitar reinicios)
  • Exportar la configuración del cliente VPN (FCConfig -m vpn -f <filename> -o exportvpn -i 1 -p <encrypted password>)
  • Disponer del cliente VPN de Fortinet en formato MSI (lo podemos conseguir de la carpeta temporal donde se descomprime el .exe si lanzamos la ejecución manual)
  • Conocer los modificadores en el proceso de instalación y desinstalación para evitar reinicios “incómodos e innecesarios” (REBOOT=ReallySuppress)
  • Identificar la clave de registro que utilizaremos para la regla de detección la cual Intune utiliza  para comprobar si el software se ha instalado correctamente (MSI {32123CA3-C24D-4A99-9347-70049B8E4C23})

Habiendo obtenido esta información, crearemos nuestro script de PowerShell y nuestro paquete .intunewin para luego desplegarlo vía App de Windows desde Intune:Fortinet

Con todo esto más o menos claro, os voy a explicar los pasos a seguir para ir cumpliendo el objetivo de quitar las versiones de los clientes VPN instalados en los equipos (sino tienen la versión que queremos actualizar), instalar la nueva versión e importar la configuración de la VPN (previamente exportada) para que los usuarios tengan la VPN configurada una vez se termine la actualización.

Lo primero que haremos será exportar la configuración de la VPN de un equipo que tenga la VPN configurada, para ello, utilizaremos el siguiente comando:

FCConfig -m vpn -f <filename> -o exportvpn -i 1 -p <encrypted password>

FCConfig es una utilidad de Fortinet que está en la carpeta donde tenemos instalado Fortinet, por ejemplo C:\Program Files\Fortinet\FortiClient. Aquí os dejo el enlace de Fortinet por si queréis ampliar info a este proceso: Back up and restore command line utility commands and syntax. Una vez exportada la configuración en formato XML, ya podemos utlizarlo para que, una vez instalado el nuevo cliente VPN, lo podamos importar:

FCConfig -m all -f <filename> -o import -i 1 -p <encrypted password>

Ahora debemos conseguir el paquete MSI del cliente VPN de Fortinet para poder desplegarlo, el proceso es sencillo. No descargamos el cliente VPN en formato .exe desde la web de Fortinet: Product Downloads and Free Trials

Ahora, iniciamos el Onlineinstaller que nos hemos descargado (FortiClientVPNOnlineInstaller.exe), sin llegar a iniciar el proceso de instalación, accedemos a la carpeta %temp% y buscamos una nueva carpeta con un GUID y dentro tenemos el instalado de Fortinet en formato .msi:

A continuación, os muestro mi script de PowerShell donde buscamos la versión del cliente de Fortinet que el equipo tiene instalado, la eliminación de claves de registro para evitar reinicios, la desinstalación de los clientes VPN que no queremos y la instalación del nuevo cliente VPN: Intune-FortiClient-Install.ps1

# Reiniciar el proceso y ejecutarlo en PowerShell de 64-bit
If ($ENV:PROCESSOR_ARCHITEW6432 -eq “AMD64”) {
Try {
&”$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe” -File $PSCOMMANDPATH
}
Catch {
Throw “Failed to start $PSCOMMANDPATH”
}
Exit
}

$FortiClient = Gwmi Win32_Product -filter “name like ‘Forti%'”
$Fortiversion = $FortiClient | %{$_ -match “7.0.7.0345”}

if ($Fortiversion -contains $True) {
Write-host “Fortinet ya está instalado”
}
Else {
if ($Fortiversion -eq $null){
Remove-Item -LiteralPath “HKLM:\SOFTWARE\Fortinet” -force -ErrorAction SilentlyContinue -Confirm:$False -Recurse
Start-Process Msiexec.exe -Argument ‘/i FortiClientVPN.msi REBOOT=ReallySuppress /qn’ -Wait
Start-Process “C:\Program Files\Fortinet\FortiClient\FCConfig.exe” -Argument “-m vpn -f VPN.xml -o import -p vuestrapassword” -Wait
}
Else {
Stop-Process -Name FortiClient -ErrorAction SilentlyContinue
Foreach ($VersionKey in $FortiClient) {Start-Process Msiexec.exe -Argument “/X $($VersionKey.IdentifyingNumber) REBOOT=ReallySuppress /qn” -Wait}
Start-Sleep 10
# Quitar la clave de registro que evitaría instalar la nueva versión sin reiniciar el equipo
Remove-Item -LiteralPath “HKLM:\SOFTWARE\Fortinet” -force -ErrorAction SilentlyContinue -Confirm:$False -Recurse
# Buscar claves del registro de Fortinet y borrarlas
$Path = “HKLM:\SOFTWARE\Classes\Installer\Products”
$PathForti = Get-ChildItem $path -Recurse -ErrorAction Stop | Get-ItemProperty -name ProductName -ErrorAction SilentlyContinue | Where-Object { $_.Productname -like ‘for*’} | Select -ExpandProperty “PSChildName”
$HKLMKey = $PathForti.PSChildName
Get-Item -Path $Path\$HKLMKey
# Borrar todas las claves de Fortinet que se encuentren en el registro
Foreach ($FortinetKey in $PathForti) {Remove-Item -LiteralPath $(“$Path\$FortinetKey”) -force -ErrorAction SilentlyContinue -Confirm:$False -Recurse}
Start-Sleep 10
Start-Process Msiexec.exe -Argument ‘/i FortiClientVPN.msi REBOOT=ReallySuppress /qn’ -Wait
Start-Process “C:\Program Files\Fortinet\FortiClient\FCConfig.exe” -Argument “-m vpn -f  VPN.xml -o import -p passsword” -Wait
}
}

Y si en algún momento queremos desinstalar la versión actualizada (7.0.7.0345), aquí os dejo el script de desinstalación: Intune-FortiClient-Uninstall.ps1

# Reiniciar el proceso y ejecutarlo en PowerShell de 64-bit
If ($ENV:PROCESSOR_ARCHITEW6432 -eq “AMD64”) {
Try {
&”$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe” -File $PSCOMMANDPATH
}
Catch {
Throw “Failed to start $PSCOMMANDPATH”
}
Exit
}

$FortiClient = Gwmi Win32_Product -filter “name like ‘Forti%'”
$Fortiversion = $FortiClient | %{$_ -match “7.0.7.0345”}
Start-Process Msiexec.exe -Argument “/X $($Fortiversion.IdentifyingNumber) REBOOT=ReallySuppress /qn” -Wait
Remove-Item -LiteralPath “HKLM:\SOFTWARE\Fortinet” -force -ErrorAction SilentlyContinue -Confirm:$False -Recurse
$Path = “HKLM:\SOFTWARE\Classes\Installer\Products”
$PathForti = Get-ChildItem $path -Recurse -ErrorAction Stop | Get-ItemProperty -name ProductName -ErrorAction SilentlyContinue | Where-Object { $_.Productname -like ‘for*’} | Select -ExpandProperty “PSChildName”
$HKLMKey = $PathForti.PSChildName
Foreach ($FortinetKey in $PathForti) {Remove-Item -LiteralPath $(“$Path\$FortinetKey”) -force -ErrorAction SilentlyContinue -Confirm:$False -Recurse}

# Borrar directorio de Fortinet
$FortinetFolder = “C:\Program Files\Fortinet”
Remove-Item -Recurse -Path $FortinetFolder

Ahora que ya tenemos ambos scripts preparados, vamos a crear nuestro paquete .intunewin, para ello metemos los siguientes ficheros en una carpeta para luego crear el paquete .intunewin (el fichero .intunewin es el paquete ya creado por mi, los ficheros son todos los otros):

Ahora, antes de configurar el paquete en Intune, como el proceso de instalación es vía MSI el proceso de detección  por parte de Intune será utilizando MSI. Pues bien, ¿cómo obtenemos la clave de registro del MSI instalado? .. ejecutamos el siguiente comando en un equipo donde tengamos instalado ya el cliente VPN (nuestro equipo de pruebas): Gwmi Win32_Product -filter “name like ‘Forti%'”

Ni que decir que este comando lo podéis utilizar para encontrar cualquier producto instalado en vuestro equipo, simplemente cambiáis la palabra en la búsqueda y listo. Pues bien, ahora que ya tenemos todo simplemente configuramos la aplicación en Intune:

Ahora se la asignamos a los usuarios o dispositivos que queramos y a esperar que se vayan actualizando los clientes, el proceso es muy sencillo y es utilizable para casi cualquier aplicación que tengamos que actualizar/eliminar, etc… Simplemente, tendremos que ir viendo que proceso lleva esa aplicación, si tiene modificadores específicos o tenemos que ir eliminando elementos de forma manual.

Por último, comentar que el script seguro que no es perfecto, yo lo he utilizando en mi entorno y para lo que necesito, por lo que es posible que vosotros tengáis que adaptarlo o hacerlo de cero :-). Yo os lo pongo como ejemplo de cosas que se pueden hacer, a veces todos necesitamos que alguien nos ilumine un poco el camino para descubrir la autopista :-).

Espero que os sea de utilidad, ahora, como siempre, os toca probarlo a vosotros!!!

Intune: Cómo habili
Infraestructura en M
NO HAY COMENTARIOS

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This