我已经创建了一个脚本,用于使用 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 }}