#Script créé par Nicolas Lang - Sous licence CC-BY-SA #https://nicolaslang.fr #Liste des serveurs à analyser $serveurs = @("DC1","DC2","DC3","hyperv1","hyperv2","hyperv3","hyperv4","lotus1","lotus2") #création de la variable qui stockera les résultats $table = New-Object System.Collections.ArrayList #L'heure de réference. C'est l'instant T qui définira l'heure exacte sur les serveurs en retirant le temps de fonctionnement du script $heurereference = get-date #Pour chaque serveur dans la liste... foreach ($serveur in $serveurs) { write-host "Récupération de $serveur" $resultat = $null #Nous obtenons l'heure du serveur $temps = Get-WmiObject win32_localtime -ComputerName $serveur #Nous reprenons l'heure actuelle $heurecompare = Get-Date #Enregistrement d'un message d'erreur s'il en est if (!$temps) { $resultat = "Erreur $($error[0].exception.message)" } else { #Nous formatons la valeur pour lui donner le format JJ/MM/AAAA hh:mm:ss $resultat = $(("{0:D2}" -f $temps.day) + "/" + ("{0:D2}" -f $temps.month) + "/" + [string]$temps.year + " " + ("{0:D2}" -f $temps.hour) +":"+ ("{0:D2}" -f $temps.minute)+":" + ("{0:D2}" -f $temps.second)) #Nous la définissons en format date, et nous retirons le nombre de ticks passés. La méthode Addticks() est utilisée, mais en précisant une valeur négative elle retirera des ticks, comme c'est le cas ici $resultat = (get-date $resultat).addticks(($heurereference - $heurecompare).Ticks)) } #Nous ajoutons dans la table un objet qui correspond au nom du serveur et à l'heure recalculée $table.Add([PSCUSTOMOBJECT]@{ "Serveur" = $serveur "Heure" = $resultat }) } #Une fois tout ceci fini, nous avons un joli fichier CSV sur le bureau avec les informations récoltées $table | Export-Csv -Path $(([environment]::GetFolderPath("Desktop") + "\"+$(get-date -Format yyyyMMdd_HHmm)+"_date_heure_serveurs.csv")) -NoTypeInformation -Delimiter ";" -Force if ($?) { "fichier exporté sur le bureau" } else { "Erreur lors de la création du fichier" $table } $table