Я хотел бы найти в Active Directory компьютер с таким именем, как WEB2309, который в настоящее время находится в подразделении «Компьютеры», а затем переместить его туда, где у других компьютеров есть такие же имена.

Это то, что у меня есть сейчас:

Первый член группы "Компьютеры"

$strFirstMember = get-adgroupmember "Computers"

Обрезает последний номер первого участника

$strFirstMember-1 = $strFirstMember.Substring(0,$strFirstMember.Length-1)

Ищет это в AD с подстановочным знаком в конце, чтобы найти похожие имена

Get-ADObject -Filter { CN -like "$strFirstMember-1*" ObjectClass = "Computer"}

Теперь мне нужно переместить первого члена в то место, которое было найдено.

0
user3388816 6 Мар 2014 в 19:27

3 ответа

Лучший ответ

Отталкиваясь от того, что у вас уже есть, мы получаем компьютер, убираем с него последний символ, а затем получаем список всех компьютеров с похожим именем. Когда у нас есть этот список, я взял из него подстроку на основе свойства DistinguishedName, удалив имя из него, просто оставив путь к OU. Затем я сгруппировал это, отсортировал группы по количеству, чтобы найти подразделение с наибольшим количеством компьютеров в нем с таким же именем, и выбрал первое. Затем я сказал ему переместить компьютер в это подразделение.

$strFirstMember = get-adgroupmember "Computers"
$strFirstMember-1 = $strFirstMember.Substring(0,$strFirstMember.Length-1)
$Complist = Get-ADComputer -Filter { CN -like "$strFirstMember-1*" }
$NewOU = ($complist|%{$_.DistinguishedName.substring($_.DistinguishedName.indexof(",")+1,$_.DistinguishedName.length-$_.DistinguishedName.indexof(",")-1)}|group|sort count -Descending|select -first 1).name
Move-ADObject $strFirstMember -TargetPath $NewOU
0
TheMadTechnician 6 Мар 2014 в 17:20

Лично я предпочитаю командлеты Quest Active Directory для сценариев AD в Powershell.

Это будет команда, которую я использую для перемещений из набора машин, уже встроенных в файл CSV:

Import-Csv "C:\toMove.csv" |`
    ForEach-Object {
    Get-QADComputer $_.Name |`
        Move-QADObject -NewParentContainer "OU=Computers,OU=Locked Computers,DC=com"
    }

За один шаг вы тоже сможете сделать что-то вроде этого:

$comparrisonPC = get-qadComputer "computerToUse"

get-qadComputers -Name "nameStructure*" |`
Where-Object {$_.CN -not $comparrisonPC.ParentContainerDN} |`
Move-QADObject -NewParentContainer "$comparrissonPC.ParentContainerDN"

У меня нет тестового домена для тестирования, но он должен работать ...

0
Austin T French 6 Мар 2014 в 17:03

Следующий код соберет все ваши компьютеры, соответствующие WEB230 * , и назначит их переменной $ c

$c =  Get-AdComputer -Filter { CN -like "WEB230*"}

Перемещает все найденные компьютеры в целевое подразделение

$c | Move-ADObject -TargetPath "ou=YourOu,dc=domain,dc=com"

И это переместит только первый, я не уверен, что вы имеете в виду под "переместить первого члена .."

 $c[0] | Move-ADObject -TargetPath "ou=YourOu,dc=domain,dc=com"
0
Raf 6 Мар 2014 в 15:50