Blog/Office/office_version.ps1

50 lines
2.9 KiB
PowerShell
Raw Normal View History

2023-12-16 12:16:22 +01:00
#Au lancement du script, nous vérifions si le fichier de log de l'exécution du script n'est pas encore présent.
if (-not (Test-Path "\\serveur\publicshare\office_version\office_version_$($env:computername).txt"))
{
#S'il ne l'est pas, nous créons un fichier de log, qui est un transcript des informations de la console.
Start-Transcript "\\serveur\publicshare\office_version\office_version_$($env:computername).txt" -Force
try
{
try
{
Write-Output "Recherche de l'information de clé"
#Les informations sur le type d'installation d'office est dans le registre. La version 14.0 correspond à Office 2010. Si vous recherchez pour d'autres versions, vous n'avez qu'a remplacer cette valeur par une autre (voir la liste en fin d'article). Peu importe qu'Outlook soit installé ou non, cette clé est présente.
$bitness = (Get-ItemProperty -Path HKLM:\Software\Microsoft\Office\14.0\Outlook\ -ErrorAction stop).bitness
}
catch
{
#Dans le cas d'une installation x86 sur un Windows 64, les clés peuvent être présentes non pas dans Microsoft, mais dans la partie Wow6432 (Windows 32-bit on Windows 64-bit). Nous recherchons ici si aucune valeur n'est trouvé en premier lieu.
Write-Output "Aucune Valeur. Essai avec la clé dans Wow6432"
try
{
$bitness = (Get-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Outlook\ -ErrorAction Stop).bitness
}
catch
{
Write-Output "Aucune valeur trouvée"
$bitness = "Aucune_Valeur"
}
}
#Les valeurs sont exportées dans un fichier CSV, pour pouvoir les consulter ensuite.
Write-Output "Export des données dans le fichier CSV"
"`"$($env:COMPUTERNAME)`";`"$bitness`"" | Out-File -filePath "\\serveur\publicshare\office_version\office_version.csv" -Append -Encoding utf8 -ErrorAction Stop -Force
}
catch
{
#Un petit peu de débuggage, si jamais un problème survient.
Write-Output "Erreur! Ligne $($error[0].InvocationInfo.ScriptLineNumber) : $($error[0].Exception.Message)"
(get-date).ToLongDateString() + " " + (get-date).ToLongTimeString() + " : $($env:computername) - Ligne $($error[0].InvocationInfo.ScriptLineNumber) : $($error[0].Exception.Message)" | out-file -FilePath "\\serveur\publicshare\office_version\office_version_error.txt" -Append -Encoding utf8
Write-Output "Arret du transcript et modification du fichier"
Stop-Transcript
Move-Item "\\serveur\publicshare\office_version\office_version_$($env:computername).txt "\\serveur\publicshare\office_version\office_version_$($env:computername)_error.txt"
}
if ($onerror -eq $false)
{
Stop-Transcript
}
}
else
{
Write-Output "Aucune action a effectuer, fichier présent : fin du transcript"
Stop-Transcript
}