Я хотел бы найти в 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"}
Теперь мне нужно переместить первого члена в то место, которое было найдено.
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
Лично я предпочитаю командлеты 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"
У меня нет тестового домена для тестирования, но он должен работать ...
Следующий код соберет все ваши компьютеры, соответствующие 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"
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.