You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2023-06-30 14:58:10

Regis Antonio
Member
Registered: 2023-05-30
Posts: 6

Atualização GLPI AGENT

Prezados,
Espero que esteja bem!
Recentemente a Teclib lançou a versão 1.5 do Glpi Agent com algumas correções críticas de segurança. Surge a necessidade de atualização do Agente nos computadores que possuo na empresa.
A versão 1.4, eu instalei via GPO pois tenho um número expressivo de computadores em minha rede. Gostaria de saber, como posso atualizar o Agent de todas as máquinas. Pensei em remover tudo e fazer um novo script para a versão 1.5, mas isso tomaria muito tempo.

Alguma alternativa?

Offline

#2 2023-07-06 15:32:48

Jow-Indio
Member
Registered: 2022-11-24
Posts: 5

Re: Atualização GLPI AGENT

Olá,

Tenho um script em powershell para o efeito, posso partilhar e altera conforme a tua necessidade.
Basicamente força a abrir em modo administrador, e copia os ficheiros dependente do sistema operativo ser 32bit ou 64bit, depois começa a instalação.
Tenho uma task sheduler no servidor Windows a correr de 3 em 3 horas, assim se encontrar computadores novos, também instala / atualiza para a nova versão.

Espero ter ajudado smile

Aqui o script, podes colar no Pwershell ISE como administrador, altera para a tua OU e local dos teus ficheiros e boa sorte.



param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false)  {
    if ($elevated) {
        # tried to elevate, did not work, aborting
    } else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
    }
    exit
}

#$ServerList = "10.254.64.132" # para testar num pc especifico
$ServerList = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=WORKSTATIONS,OU=xxxx,OU=xxx,DC=pt,DC=xxx,DC=xxx').Name #para todos os computadore de determinado OU
#Criar Progess Bar
$totalComputers = $ServerList.Count
$completedComputers = 0


$file1 = '\\servidor\f$\GLPI\*1.5-x64.msi'
$file2 = '\\servidor\f$\GLPI\*1.5-x86.msi'

foreach ($ComputerName in $ServerList){
$pingstatus = ""
IF (Test-Connection -BufferSize 32 -Count 1 -ComputerName $ComputerName -Quiet) {
        $pingstatus = "Online"
        Write-Host $ComputerName "Online" -ForegroundColor Blue -ErrorAction SilentlyContinue

$Check=@(Invoke-Command -ComputerName $ComputerName -ErrorAction SilentlyContinue {Get-ItemProperty -Path 'HKLM:\SOFTWARE\GLPI-Agent\Installer' -Name Version | select Version})
    #$Check=@(gp "HKLM:\SOFTWARE\GLPI-Agent\Installer").Version
    if ($Check.Version -contains "1.5")
    {
            #Log("'" + $ComputerName + "'Servers are not pinging")
        Write-Host $ComputerName "Já contém o GLPI instalado" -ForegroundColor Green -ErrorAction SilentlyContinue

}
Elseif ($Check.Version -notcontains "1.5" )


{
$session = New-PSSession -ComputerName $computerName

$osArchitecture = (Get-WmiObject Win32_OperatingSystem | Select-Object -ExpandProperty osarchitecture)

if ($osArchitecture -like "64*") {
    # 64-bit code here
    Write-Host "$computerName 64-bit OS"
    Copy-Item -Path $file1 -ToSession $session -Destination 'c:\windows\temp'
    $msiPath = 'C:\Windows\Temp\GLPI-Agent-1.5-x64.msi'
} else {
    # 32-bit code here
    Write-Host "$computerName 32-bit OS"
    Copy-Item -Path $file2 -ToSession $session -Destination 'c:\windows\temp'
    $msiPath = 'C:\Windows\Temp\GLPI-Agent-1.5-x86.msi'
}

Invoke-Command -Session $session -ScriptBlock {
    Start-Process -FilePath 'msiexec.exe' -ArgumentList "/i $using:msiPath RUNNOW=1 SERVER='http://xxx-glpi.pt.xxx.com:8090/front/inventory.php' /passive /q /log C:\GLPIInstall.log" -Wait
}
        Write-Host  "A instalar no" $ComputerName -ForegroundColor Green
        Timeout /T 30
        #Log("'" + $ComputerName + "' Successfully started operation")
        Remove-PSSession $session
    }}
    Else
    {
            Write-Host $ComputerName  "Offline" -ForegroundColor red
}

    $completedComputers++
    $progressPercentage = [Math]::Round(($completedComputers / $totalComputers) * 100)
    Write-Progress -Activity "Instalando GLPI em $totalComputers Computadores" -Status "Progresso: $progressPercentage%" -PercentComplete $progressPercentage
}

# Limpa a barra de progresso
Clear-Progress

Last edited by Jow-Indio (2023-07-06 17:19:21)

Offline

Board footer

Powered by FluxBB