![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Присвоить каждому компьютеру инвентарный номер на основе сайта и порядка |
|
PowerShell - [решено] Присвоить каждому компьютеру инвентарный номер на основе сайта и порядка
|
Пользователь Сообщения: 122 |
Есть множество сайтов: MSK, SPB, NSK (около 20)
На каждом сайте есть около сотни компьютеров в AD Необходимо каждому компьютеру присвоить инвентарный номер формата: (001,002,003...), при этом на каждом сайте номера начинаются заново с 001 У каждого компьютера есть свойство в AD - @{extensionAttribute1 = MSK}(или spb или nsk) а @{extensionAttribute2 = 001} Нужно, чтобы скрипт каждому компьютеру выдал порядковый номер на основании атрибута1 и самое сложное: если компьютер в атрибуте2 уже содержит порядковый номер то он не выдавал этот номер другому компьютеру Например: Имя Атрибут1 Атрибут2 Comp1, MSK, ea2=004 Comp2, MSK, ea2=<пусто> Comp3, MSK, ea2=001 Comp4, MSK, ea2=<Непонятная строка> Comp5, SPB, ea2=<пусто> Comp6, SPB, ea2=001 ... После прохождения скрипта: Имя Атрибут1 Атрибут2 Comp1, MSK, ea2=004 Comp2, MSK, ea2=002 Comp3, MSK, ea2=001 Comp4, MSK, ea2=003 Comp5, SPB, ea2=002 Comp6, SPB, ea2=001 |
|
Отправлено: 09:26, 28-08-2018 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Kazun, Так мы же про автоматизацию, имена компьютеров сложные и содержат инфу из компьютера, там серийники, типы итп, чтобы ручками ничего не нужно было делать, помоги пожалуйста...
|
Отправлено: 10:47, 29-08-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Т.к. локальный комптьютер не в домене, то требуется указать $DomainDN,$Site для которого осуществляется поиск и учетную запись,которая имееет доступ к Active Directory.
# Атрибуте1(берется из переменной(ее получает другой скрипт)) $site = "...." #Учетные данные для подключения к Active Directory $Credential = New-Object System.Management.Automation.PSCredential('UserName', (ConvertTo-SecureString 'Password' -Force -AsPlainText)) # Создаем ADSI Search $Searcher = New-Object System.DirectoryServices.DirectorySearcher $Searcher.PropertiesToLoad.Add('extensionAttribute2') # Только данные из текущего сайта $Searcher.Filter = "(extensionAttribute1=$site)" # Домен для подключения $DomainDN = "LDAP://corp.contoso.com/DC=corp,DC=contoso,DC=ru" # Подключение $Domain = New-Object System.DirectoryServices.DirectoryEntry($DomainDN ,$Credential.UserName,$Credential.GetNetworkCredential().Password) # Устанавливаем текущие данные подключения $Searcher.SearchRoot = $Domain # Делаем поиск $All = $Searcher.FindAll() $ex2 = $All | Where {$_.Properties["extensionAttribute2"][0] -match "^\d{3}$"} | Foreach {$_.Properties["extensionAttribute2"][0]} # Получаем свободный ID $Start = 0 do { $Start++ $FreeId = "$Start".PadLeft(3,'0') } while($ex2 -contains $FreeId) $FreeID |
Последний раз редактировалось Kazun, 29-08-2018 в 11:45. Причина: () Отправлено: 11:29, 29-08-2018 | #12 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:44, 29-08-2018 | #13 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Так ведь будет работать?:
$site = "SPB" $server = "dc1" а учетные данные подтягиваются из unattened файла $All = Get-ADComputer -Filter * -Properties extensionAttribute1,extensionAttribute2 -server $server | where {$_.extensionAttribute1 -eq $site} # Делаем поиск #$All = $Searcher.FindAll() $ex2 = $All | Where {$_.extensionAttribute2 -match "^\d{3}$"} | Foreach {$_.extensionAttribute2} # Получаем свободный ID $Start = 0 do { $Start++ $FreeId = "$Start".PadLeft(3,'0') } while($ex2 -contains $FreeId) $FreeID |
Отправлено: 12:51, 29-08-2018 | #14 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:25, 10-09-2018 | #15 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2013 - Ссылка на ячейки другого листа, с возможностью изменения порядка ячеек | btescm | Microsoft Office (Word, Excel, Outlook и т.д.) | 5 | 04-09-2014 23:16 | |
http/web - [решено] присвоить каждому домену свою папку <Apache> | morgan1991 | Сетевые технологии | 2 | 13-12-2010 15:18 | |
7 / 2008 R2 - [решено] Присвоить имя компьютеру | Hector | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 5 | 24-04-2010 01:51 | |
Доступ - Много пользователей на компе (каждому своя папочка)? | arsysha | Microsoft Windows 2000/XP | 8 | 09-09-2009 00:50 |
|