Не перемещать имена хостов автоматически в желаемое OU с помощью скрипта
Я создал сценарий для автоматического перемещения имен хостов в желаемое подразделение в Windows server 2016 с помощью PowerShell 5.1, но он не работает должным образом. Все это относится к тому же OU, которое находится в моем первом OU согласно моему сценарию. Может ли какое-то тело помочь мне изменить сценарий ниже,
Правила,
Если первые 4 буквы идут ABFL, они должны перейти на ABFL.
С 5-й по 8-ю букву идет THN, следует переместить в ABFL \ THN
С 5 по 7 букву RT следует переехать в ABFL \ R-tech-park
С 5 по 7 букву IB следует переместить в ABFL \ INDIABULLS.
С 5-й по 8-ю букву идет любая другая, которая должна переместиться в ABFL\Branches
В имени хоста, последним перед цифрой D, следует перейти к Desktop OU в соответствии с указанным выше
В имени хоста, последним перед цифрой L, следует перейти к Ноутбук OU под указанным выше
Мой сценарий сценария ниже.
# will match a d,l,D or L character before the digit
[regex]$regex = "[dlDL](?=\d)"
Get-Content -Path C:\Users\ssgrp0312\Desktop\dr\move.txt | ForEach-Object {
# check if the hostname matches the regex
$match = $regex.Match($_)
$first = $_.Substring(0,4)
$second = $_.Substring(4,3)
$third = $_.Substring(4,2)
if ($match.Success)
{
If ( $first -eq "abfl" ){
If ( $second -eq "thn" )
{
# if client is L -> move to laptops
If($match.Value.ToUpper() -eq "L"){
Write-Host "$_ is a laptop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=Laptops,OU=G-Corp,OU=ABFL,DC=MANS,DC=COM"
# if client is D -> move to desktops
}Elseif($match.Value.ToUpper() -eq "D"){
Write-Host "$_ is a desktop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=desktops,OU=G-Corp,OU=ABFL,DC=MANS,DC=COM"
}Else{
Write-Host "$_ not a laptop nor desktop" -ForegroundColor Red
}}
ElseIf ($third -eq "ib" )
{
# if client is L -> move to laptops
If($match.Value.ToUpper() -eq "L"){
Write-Host "$_ is a laptop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=Laptops,OU=Indiabulls,OU=ABFL,DC=MANS,DC=COM"
# if client is D -> move to desktops
}Elseif($match.Value.ToUpper() -eq "D"){
Write-Host "$_ is a desktop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=desktops,OU=Indiabulls,OU=ABFL,DC=MANS,DC=COM"
}Else{
Write-Host "$_ not a laptop nor desktop" -ForegroundColor Red
}}
ElseIf ($third -eq "ib" )
{
# if client is L -> move to laptops
If($match.Value.ToUpper() -eq "L"){
Write-Host "$_ is a laptop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=Laptops,OU=R-Tech-Park,OU=ABFL,DC=MANS,DC=COM"
# if client is D -> move to desktops
}Elseif($match.Value.ToUpper() -eq "D"){
Write-Host "$_ is a desktop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=desktops,OU=R-Tech-Park,OU=ABFL,DC=MANS,DC=COM"
}Else{
Write-Host "$_ not a laptop nor desktop" -ForegroundColor Red
}}
}
Else {
# if client is L -> move to laptops
If($match.Value.ToUpper() -eq "L"){
Write-Host "$_ is a laptop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=Laptops,OU=branches,OU=ABFL,DC=MANS,DC=COM"
# if client is D -> move to desktops
}Elseif($match.Value.ToUpper() -eq "D"){
Write-Host "$_ is a desktop" -ForegroundColor Green
Get-ADComputer $_ | Move-ADObject -TargetPath "OU=desktops,OU=branches,OU=ABFL,DC=MANS,DC=COM"
}Else{
Write-Host "$_ not a laptop nor desktop" -ForegroundColor Red
}}}
else { Write-Host "$_ not a laptop nor desktop" -ForegroundColor Green }}