Metsys Blog

Powershell : Script déplacement et désactivation compte ordinateurs

Cliquez pour évaluer cet article !
1 avis

Contexte

Dans le cadre d’un projet, j’ai du gérer un certain nombre de comptes ordinateurs qui devaient être déplacés et désactivés. Problème, cette action ne pouvait, de par le nombre de machines concernées, être effectuée machine par machine.

J’ai donc créé un script qui a pour but de repérer les comptes ordinateurs (non-serveurs) qui sont inactifs depuis une durée déterminée. Il les inscrit ensuite dans un fichier texte qui va être généré dans le répertoire “$CsvPath/MachinesEnabled.csv” afin de pouvoir faire un retour arrière en cas de problème.

Ce script doit être exécuté depuis une session (Powershell ou RDP) sur un serveur ayant les outils d’administration active directory, les droits administrateurs et le module “activedirectory” doit y être importé.

Descriptif

Descriptif des arguments de la fonction Clean-AdComputer :

  • CsvPath : répertoire dans lequel sera stocké le listing des machines en .csv
  • BeforeDays : Nombre de jours avant lesquelles vous souhaitez répertorier, déplacer ou désactiver les machines
  • OUCheck : OU (Unité d’organisation) dans laquelle vous souhaitez récupérer la liste de machines
  • OUTarget : OU (Unité d’organisation) dans laquelle vous souhaitez déplacer les machines
  • Desactivate : Argument à ajouter si vous souhaitez désactiver les machines
  • Move : Argument à ajouter si vous souhaitez déplacer vos machines vers l’OUTarget.

Script

## Script Desactivation et déplacement de machines ## 
## 23/03/2017 ## ## MOULHERAT Romain ## 
## Société Metsys ## 

Function Clean-AdComputeurs{ 

Param ( 
[Parameter(Mandatory=$true)] 
[ValidateScript({Test-Path $_ -PathType 'Container'})] 
[string] 
$CsvPath 
, 
[Parameter(Mandatory=$true)]
[ValidateRange(60,999)] 
[int] 
$BeforeDays 
, 
[Parameter(Mandatory=$true)] 
[string] 
$OUCheck 
, 
[Parameter(Mandatory=$false)] 
[string] 
$OUTarget 
, 
[Parameter(Mandatory=$false)] 
[switch] 
$Desactivate 
, 
[Parameter(Mandatory=$false)] 
[switch] 
$Move 
) 

Process 
{ 
## Création du répertoire de stockage du listing machines (à utiliser en pour retour arrière) ## 

mkdir $CsvPath 

## Période à partir de laquelle vous souhaitez déplacer ou désactiver les machines ## 

$Date = (Get-Date).AddDays(-$BeforeDays) 
$Path = "$CsvPath\MachinesEnabled.csv" 
## Récuperation du listing ## 

$Computers = Get-ADComputer -Properties 
lastLogonDate,OperatingSystem,Enabled -SearchBase $OUCheck -Filter {(LastLogonDate -lt $Date) -and ( OperatingSystem -notlike "*Serve*" ) -And ( Enabled -eq $True ) } | Ft Name -HideTableHeaders $Computers | Out-File -FilePath $Path -Encoding ascii $CountComputers = ($Computers).count 
Write-Host "La liste des machines est dans $Path, il peut etre réutilisée afin de faire un roll-back et contient $CountComputers Machine(s)" 

## Si l'argument -Move a été indiqué on execute le deplacement des machines ## 

If ($Move) 
{ 
Get-ADComputer -Properties lastLogonDate,OperatingSystem,Enabled -SearchBase $OUCheck -Filter {(LastLogonDate -lt $Date) -and ( OperatingSystem -notlike "*Serve*" ) -And ( Enabled -eq $True ) } | Move-ADObject -TargetPath $OUTarget 
Write-Host " Les machines suivantes ont été déplacé : $Computers "
}
Else 
{ 
Write-Host "Pas de désactivation de manchines" } 

## Si l'argument -Desactivate à été indiqué on désactive les comptes ordinateurs ## 
If ($Desactivate) 
{ 
Get-ADComputer -Properties lastLogonDate,OperatingSystem,Enabled -SearchBase $OUCheck -Filter {(LastLogonDate -lt $Date) -and ( OperatingSystem -notlike "*Serve*" ) -And ( Enabled -eq $True ) } | Set-ADComputer -Enabled $false 
Write-Host " Les comptes des machines suivantes ont été déplacé : $Computers " 
} 
Else 
{
Write-Host "Pas de deplacement des machines"
} 
} 
}

Notez cet article

Vous avez aimé cet article ?

Rendez-le plus visible auprès des internautes en lui mettant une bonne note.

Cliquez pour évaluer cet article !
1 avis

Articles pouvant vous intéresser

RETEX CERT

Tout d’abord, en termes d’éthique et pour respecter la confidentialité des sujets aussi sensibles que