Не перемещать имена хостов автоматически в желаемое 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 }}

0 ответов

Другие вопросы по тегам