Création script

This commit is contained in:
nicolas 2023-12-16 16:50:52 +01:00
parent abe380f22a
commit fa4e1d68fc
2 changed files with 84 additions and 1 deletions

View File

@ -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

83
Inventaire/display_SN.ps1 Normal file
View File

@ -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 ";"