none
Сопоставление имен компьютеров в Active Directory RRS feed

  • Вопрос

  • Всем привет!

    Подскажите как найти компьютер с пропущенной цифрой в AD

    например тут надо что бы ответ я получил Test04:

    Test01

    Test02

    Test03

    Test05

    Как итог хочу получить скрипт который смотрит в AD, если имя не существует добавляет в домен, а если существует то переименовывает комп полученный в результате в даном примере это Test04 и добавляет в домен

    Что пока удалось сделать самому...

    $Pcname = (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name
    $PCSearch = Get-ADComputer -Identity $Pcname
    if ($PCSearch -eq $null)
    {
    $RootOU = '"OU=WS,OU=NA,OU=B,DC=nrt,DC=kk,DC=ru"'
    Add-Computer -DomainName "kk.ru" -OUPath $RootOU -credential $cred
    }

    23 сентября 2019 г. 11:23

Ответы

  • всегда TestXX, где ХХ порядковый номер, да в одной и в ней есть подОУ, если Test04 существует то машина должна добавиться как Test06, при условии что с таким именем не существует компа в AD да

    Для начала получаете все машины подпадающие под маску через

    $Computers = (Get-Adcomputer -Credential $cred | Where {$_.Name -match 'Test\d+'}).Name

    Потом ищите пропажу. Пример поиска:

    $Computers = @("test01", "test02", "test03", "test06")
    $index = 0
    $NewCN = ''
    foreach ($computer in $computers){
        if ($computer -match "^Test(?'Index'\d+)$"){
            [int]$Current_Number = $Matches['Index']
            if ($Current_Number -ne $index+1){
                $NewCN = "Test$(if(($Index+1) -lt 10){'0'})$($Index+1)" 
                "Missed computername $NewCN"
                break
            }
            $index = $Current_Number
        }
    }
    If ([string]::IsNullOrEmpty($NewCN)){
        $NewCN = "Test$(if(($Index+1) -lt 10){'0'})$($Index+1)"
        "New computername will be $NewCN"
    }
    "Renaming computer from $Env:ComputerName to $NewCN"

    После того как нашли необходимое имя, переименовываете машину и заводите в домен. Переименование машины гуглиться без проблем.

    В последнем фрагменте кода можете поэкспериментировать с комбинациями цифр и названий. Требуемое имя будет в переменной $NewCN


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Pokesh 23 сентября 2019 г. 15:37
    23 сентября 2019 г. 12:47
    Модератор

Все ответы

  • по умолчанию новая машина имеет название  вида Win-A63E4J7GXFYI7исходя из этого у вас машина должна добавляться именно с таким именем в домен? Или всегда TestXX, где ХХ порядковый номер? Машины все находятся в одной ОU? Для того чтобы найти Test04, необходимо найти все остальные. Если Test04 существует то машина должна добавиться как Test06?

    The opinion expressed by me is not an official position of Microsoft

    23 сентября 2019 г. 11:50
    Модератор
  • всегда TestXX, где ХХ порядковый номер, да в одной и в ней есть подОУ, если Test04 существует то машина должна добавиться как Test06, при условии что с таким именем не существует компа в AD да
    23 сентября 2019 г. 12:17
  • всегда TestXX, где ХХ порядковый номер, да в одной и в ней есть подОУ, если Test04 существует то машина должна добавиться как Test06, при условии что с таким именем не существует компа в AD да

    Для начала получаете все машины подпадающие под маску через

    $Computers = (Get-Adcomputer -Credential $cred | Where {$_.Name -match 'Test\d+'}).Name

    Потом ищите пропажу. Пример поиска:

    $Computers = @("test01", "test02", "test03", "test06")
    $index = 0
    $NewCN = ''
    foreach ($computer in $computers){
        if ($computer -match "^Test(?'Index'\d+)$"){
            [int]$Current_Number = $Matches['Index']
            if ($Current_Number -ne $index+1){
                $NewCN = "Test$(if(($Index+1) -lt 10){'0'})$($Index+1)" 
                "Missed computername $NewCN"
                break
            }
            $index = $Current_Number
        }
    }
    If ([string]::IsNullOrEmpty($NewCN)){
        $NewCN = "Test$(if(($Index+1) -lt 10){'0'})$($Index+1)"
        "New computername will be $NewCN"
    }
    "Renaming computer from $Env:ComputerName to $NewCN"

    После того как нашли необходимое имя, переименовываете машину и заводите в домен. Переименование машины гуглиться без проблем.

    В последнем фрагменте кода можете поэкспериментировать с комбинациями цифр и названий. Требуемое имя будет в переменной $NewCN


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Pokesh 23 сентября 2019 г. 15:37
    23 сентября 2019 г. 12:47
    Модератор