Я только что нашел очень грязный обходной путь, но он работает .. Для меня как для новичка это нормально, но я хотел бы улучшить свои навыки, поэтому я был бы признателен, когда вы, ребята, могли бы дать мне несколько советов.
Мое решение прямо сейчас:
Мой первый шаг - получить отсортированный список компьютеров и ноутбуков (мне просто нужны эти фильтры для вещей)
$ADnbSorted = Get-ADComputer -SearchBase 'OU=computers,dc=example,dc=com' -Filter {(Name -like "NB-DE-*") -and (Name -notlike "NB-DE-M*") }| Sort-Object | Select-Object Name
$ADpcSorted = Get-ADComputer -SearchBase 'OU=computers,dc=example,dc=com' -Filter {(Name -notlike "PC-DE-R*") -and (Name -like "PC-DE-*") } | Sort-Object | Select-Object Name
Мой следующий шаг - создать список шаблонов, как должен выглядеть правильный список имен хостов
$templatehostname = 1..$ADpcSorted[-1].Name |
ForEach-Object{ "$prefix" + $_.ToString("00000")}
Я использую префикс, потому что это небольшое приложение, в которое пользователь может войти, если он хочет знать все неизвестные P C и все неизвестные ноутбуки Имена хостов :)
После этого я просто сравниваю оба из них и добавляю пропущенные записи просто в новый список
> ForEach($Hostname in $templatehostname)
> {
> if (-Not ($ADpcSorted.Name.Contains($Hostname)))
> {
> $freeHostname += $Hostname
> }
> }
Извините за эту кучу дерьма :)