From fa4e1d68fccf5becf978c740b00bf2905b9ecd90 Mon Sep 17 00:00:00 2001 From: Nicolas Lang Date: Sat, 16 Dec 2023 16:50:52 +0100 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Domino/domino_group_modif.ps1 | 2 +- Inventaire/display_SN.ps1 | 83 +++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 Inventaire/display_SN.ps1 diff --git a/Domino/domino_group_modif.ps1 b/Domino/domino_group_modif.ps1 index e657173..68c560f 100644 --- a/Domino/domino_group_modif.ps1 +++ b/Domino/domino_group_modif.ps1 @@ -1,7 +1,7 @@ #Script créé par Nicolas Lang - Sous licence CC-BY-SA #https://nicolaslang.fr -$debugging = $false #a mettre sur truepour avoir des infos sur la zone de code qui crée l'enregistrement +$debugging = $false #a mettre sur true pour avoir des infos sur la zone de code qui crée l'enregistrement $date = Get-Date -Format "dd/MM/yyyy HH:mm:ss" set-location $([Environment]::GetFolderPath("Mydocuments")) #se place dans le repertoire "mes documents" de l'utilisateur actuel try diff --git a/Inventaire/display_SN.ps1 b/Inventaire/display_SN.ps1 new file mode 100644 index 0000000..f4e726c --- /dev/null +++ b/Inventaire/display_SN.ps1 @@ -0,0 +1,83 @@ +#Script créé par Nicolas Lang - Sous licence CC-BY-SA +#https://nicolaslang.fr + + +#déplacement dans le repertoires "mes documents" de l'utilisateur actuel +Set-Location $([Environment]::GetFolderPath("Mydocuments")) +#import du module activedirectory +ipmo activedirectory +#nous récupérons la liste des ordinateurs du domaine, en prenant également la dernière ouverture de session +$ordinateurs = Get-ADComputer -Filter * -Properties lastlogondate | Select-Object -Property name,lastlogondate +#nous filtrons à 4 mois en arrière +$ordinateurs = $ordinateurs | Where-Object {$_.lastlogondate -gt $((Get-Date).addmonths(-4))} +#creation d'un tableau +$tableau = New-Object System.Collections.ArrayList +$progress = 0 +foreach ($ordinateur in $ordinateurs) + { + + $progress++ + Write-Progress -Activity "Recherche d'écrans sur $($ordinateur.name) " -PercentComplete $($progress/$($ordinateurs.Count)*100) -Status "$progress / $($ordinateurs.count)" + $objet = New-Object Psobject + $objet |Add-Member -MemberType NoteProperty -Name "Ordinateur" -Value $ordinateur.name + $ping = $null + #nous pingons le poste. + $ping = Test-Connection -ComputerName $ordinateur.name -Count 1 + #Si le TTL du poste est entre 65 et 128, c'est un poste windows. Nous continuons donc le script + if ($ping -and $ping.responsetimetolive -gt 64 -and $ping.responsetimetolive -le 128) + { + $objet |Add-Member -MemberType NoteProperty -Name "Répond au ping" -Value "Oui" + $moniteurs = $null + + $moniteurs = $null + #on lance la requete WMI + $moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name) + #Si le resultat de la commande precedente est une erreur, alors... + if (!$?) + + { + Write-Host "Erreur!" + $objet | Add-Member -MemberType NoteProperty -Name "WMI" -Value "ERREUR!!" + } + #Sinon... + else + { + Write-Host "Aucune erreur" + $objet | Add-Member -MemberType NoteProperty -Name "WMI" -Value "" + } + $i=0 + foreach ($moniteur in $moniteurs) + { + $i++ + #Le modele est la deuxième valeur de la propriété instancename. + $modele = $moniteur.instancename.split("\")[1] + $sn = $null + #Récupération du SN puis ajout dans l'objet + $moniteur.serialnumberid | % {$sn += [char]$_} + $objet | Add-Member -MemberType NoteProperty -Name "Modèle ecran $i" -Value $modele + $objet | Add-Member -MemberType NoteProperty -Name "SN ecran $i" -Value $sn + + } + $i++ + for($i; $i -le 3;$i++) + { + $objet | Add-Member -MemberType NoteProperty -Name "Modèle ecran $i" -Value "" + $objet | Add-Member -MemberType NoteProperty -Name "SN ecran $i" -Value "" + + } + + } + #si le ttl est inférieur ou égal à 64, c'est un non windows + elseif ($ping.responsetimetolive -ne $null -and $ping.responsetimetolive -le 64) + { + $objet |Add-Member -MemberType NoteProperty -Name "Répond au ping" -Value "Non Windows" + } + else + { + $objet | Add-Member -MemberType NoteProperty -Name "Répond au ping" -Value "Non" + } + $null = $tableau.add($objet) + + } +$tableau | Export-Clixml -Path "ecrans.xml" +$tableau | Export-Csv -Path "ecrans.csv" -NoTypeInformation -Encoding UTF8 -Force -Delimiter ";" \ No newline at end of file