PowerShell | Effectuer un suivi d'une installation à partir d'un fichier

Rédigé par O. Clotaire Aucun commentaire
Classé dans : Windows, PowerShell Mots clés : Windows, PowerShell, MS-DOS

Certaines installations ne permettent pas d'avoir un suivi via leur exécutable (*.exe, *.msi, etc.). Nous effectuerons donc un suivi via un autre fichier.

Merci à Eric H. pour cette création.

Nous avons l'installation d'un client VPN sans dépôt d'exécutable. Nous prendrons compte du fichier VPNFICHIER.cmp.

Nous allons créer un fichier install_hostname.csv sur chaque ordinateurs, ce qui nous permettra d'effectuer le suivi. 

Ces instructions permettent de savoir si l'installation est effectif pour un utilisateur ou tous les utilisateurs (nos profiles sont placés dans D:\).

Ceux-ci seront enregistrés sur un serveur qui sera connecté via la commande net use et aura la lettre H du lecteur réseau.


suivi.bat
@echo off
for /f %%a in ('powershell.exe get-executionpolicy') do set "b=%%a"
powershell.exe Set-ExecutionPolicy Unrestricted
REM cd "C:\Script"
powershell.exe ".\SuiviVpn.ps1"
if %b% == Restricted (powershell.exe Set-ExecutionPolicy Restricted)

SuiviVpn.ps1

$name=$env:COMPUTERNAME
$Pathing = "H:\Public\Installation_VPN\install_$name.csv"
net use H: \\CheminServeurDeStockage\Suivi /user:Domaine\Nom MotDePasse
#install on all users
if ((Test-Path "C:\ProgramData\Microsoft\Network\Connections\CM\VPNFICHIER.cmp" ) -eq "True" -and (Test-Path "C:\ProgramData\Microsoft\Network\Connections\CM\VPNFICHIER" ) -eq "True" )
{
    "$name;installed on all users;; " | Out-File $Pathing -Encoding ascii
    exit
}
#install on a user
else{
    #Getting Path of each Profile
    $value1 = $NULL
    $value2 = $NULL
    $value3 = $NULL
    $value4 = $NULL
    $value4bis = $NULL
    $value5 = $NULL
    $value6 = $NULL
    $value7 = $NULL
   
    $valeur2 = $NULL
    $valeur3 = $NULL
    $valeur4 = $NULL
    $valeur4bis= $NULL
    $valeur5 = $NULL
    $valeur6 = $NULL
    $valeur7 = $NULL

    write-host $name
    $validation = 0
    New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS
    $value1 =gwmi win32_userprofile | select sid, localpath
    foreach ($line in $value1) { $value2 = $value2 + $line -split "\s+"}
    foreach ($line in $value2) { $value3 = $value3 + $line -split "}"}
    foreach ($line in $value3) { $value4bis = $value4bis + $line -split ";"}
    foreach ($line in $value4bis) { $value4 = $value4 + $line -split "@{sid="}
   
   
    #Getting Only Value containing sid starting with S-1-5-21:\
    foreach ($ligne in $value4){if ($ligne.contains("S-1-5-21")){$value5=$value5+$ligne+" "}}
    #Parsing Value
    $value6=$value5.split(" ")
    $count=$value6.count -1
    $value7 = [System.Collections.generic.List[System.Object]]$value6
    $value7.removeat($count)
   
    foreach ($line in $value1) { $valeur2 = $valeur2 + $line -split "\s+"}
    foreach ($line in $valeur2) { $valeur3 = $valeur3 + $line -split "}"}
    foreach ($line in $valeur3) { $valeur4bis = $valeur4bis + $line -split ";"}
    foreach ($line in $valeur4bis) { $valeur4 = $valeur4 + $line -split "localpath="}
   
   
    #Getting Only valeur containing D:\
    foreach ($ligne in $valeur4){if ($ligne.contains("D:\Profile")){$valeur5=$valeur5+$ligne+" "}}
    #Parsing valeur
    $valeur6=$valeur5.split(" ")
    $valeur7 = [System.Collections.generic.List[System.Object]]$valeur6
   
    #Checking
    for($i=0;$i -lt $value7.count; $i++)       
        {
            $user=$valeur7[$i]
            $test = "HKU:\"+[string]$value7[$i]+"\Software\Microsoft\Connection Manager\Mappings"
            if ((Test-Path $test ) -eq "True")
            {
                write-host $Pathing
                 "$name;installed on;$user; " | Out-File $Pathing -Encoding ascii
                $validation = 1
            }
   
            else
            {
             
            }       
       
}
    if ($validation -eq 0)
    {
         "$name;not installed;$user; " | Out-File $Pathing -Encoding ascii
    }
}
net use /delete H: /y

A PROPOS

  • Grace à mon expérience dans les Systèmes d'Information, j'ai le privilège de partager mon expérience en les centralisant sous la forme d’une base de connaissance.
  • Parfois certaines de nos questions ne trouvent pas toujours de réponse. Le domaine de l’informatique évolue rapidement, il est alors important de pouvoir profiter des solutions déjà expérimentés.
  • Ce site sera de plus en plus accessible.
  • Je vous remercie d’avance pour vos éventuelles remarques constructives permettant son amélioration.

Écrire un commentaire

 Se rappeler de moi sur ce site
Quelle est le troisième caractère du mot hxguyz ?

Fil RSS des commentaires de cet article

↓