2017-10-17 2 views
0

Je travaille sur un script de nettoyage AD. Ce que je veux, c'est que le script s'exécute une fois par mois et déplace tous les comptes désactivés de ce mois dans une unité d'organisation sous l'unité d'organisation désactivée et l'étiquette avec la date. Pour la plupart, cela fonctionne. Je voudrais de l'aide avec l'ajout de la logique pour ne pas essayer de créer la nouvelle unité d'organisation avec la même date. Quelqu'un a-t-il une idée?Si le nom de l'unité d'organisation a cette date, ne créez pas

$date=get-date -Format o 
$date=$date.Split("T") 
$date=$date[0] 
New-ADOrganizationalUnit -Name $date -Path "OU=Disabled, DC=mydomain, DC=net" -ErrorAction SilentlyContinue 
$disabled = (get-aduser -filter * -properties lastlogondate | Where-Object 
{$_.enabled -eq $false -and $_.lastlogondate -lt (get-date).adddays(-90)} 
|select Name).name 
foreach($user in $disabled) 
{ 
Get-ADUser $user | Move-ADObject -TargetPath "OU=$date, OU=Disabled, 
DC=mydomain, DC=net" -ErrorAction SilentlyContinue 
} 
+1

Est-ce que 'Get-ADOrganizationalUnit' peut être utilisé pour vérifier si l'unité d'organisation existe déjà? – lit

Répondre

1

Comme @lit est déjà sur je ferais:

$existingOU = Get-AdOrganizationalUnit -filter { name -eq "$date" }; 
if($null -eq $existingOU) { 
"....do your New-AdOrgani.... cmdlet execution here...." } 

J'espère que cette aide et avoir un grand 1 :-).

0

Voici ce que j'ai trouvé qui fonctionne mais je vais essayer votre chemin aussi. Merci pour votre message.

$date=get-date -Format o 
$date=$date.Split("T") 
$date=$date[0] 
$disabled = (get-aduser -filter * -properties lastlogondate | Where-Object {$_.enabled -eq $false -and $_.lastlogondate -lt (get-date).adddays(-90)} |select Name).name 
try { 
New-ADOrganizationalUnit -Name $date -Path "OU=Disabled, DC=mydomain, DC=net" 
} catch { 
#If we want another action 
} 
foreach($user in $disabled) 
{ 
Get-ADUser $user | Move-ADObject -TargetPath "OU=$date, OU=Disabled, DC=mydomain, DC=net" -ErrorAction SilentlyContinue 
}