0

我已经创建了一个脚本,用于使用 PowerShell 5.1 将主机名自动移动到 Windows Server 2016 中的所需 OU,但它运行不正常。根据我的脚本,所有内容都进入我的第一个 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 到来之前的最后一个主机名中,应该转到上面指定的桌面 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 }}
4

0 回答 0