|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Присвоить каждому компьютеру инвентарный номер на основе сайта и порядка |
|
|
PowerShell - [решено] Присвоить каждому компьютеру инвентарный номер на основе сайта и порядка
|
Пользователь Сообщения: 122 |
Профиль | Отправить PM | Цитировать Есть множество сайтов: 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 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Get-ADComputer -Filter "extensionAttribute1 -like '*'" -Properties extensionAttribute1,extensionAttribute2 | Group-Object extensionAttribute1 | Foreach { $ex2 = $_.Group | Where {$_.extensionAttribute2 -match "^\d{3}$"} | Foreach-Object {$_.extensionAttribute2} $start = 0 $id = "$start".PadLeft(3,'0') $_.Group | Where {$_.extensionAttribute2 -notmatch "^\d{3}$"} | Foreach-Object { do { $start++ $id = "$start".PadLeft(3,'0') } while($ex2 -contains $id) Set-ADComputer $_ -Replace @{extensionAttribute2=$id} } } |
Последний раз редактировалось Kazun, 28-08-2018 в 10:58. Отправлено: 09:43, 28-08-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Сижу уже минут пять туплю в код, словно повершел впервой вижу
а что значит эта строка: $ex2 = $_.Group | Where {$_.extensionAttribute2 -match "^\d{3}$"} | Foreach-Object {$_.extensionAttribute2} Как оно потом заходит в while не могу понять |
Отправлено: 10:11, 28-08-2018 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $ex2 = $_.Group | Where {$_.extensionAttribute2 -match "^\d{3}$"} | Foreach-Object {$_.extensionAttribute2}
|
Отправлено: 10:18, 28-08-2018 | #4 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Оставил в выборке 7 тестовых компьютеров,
в результате скрипт перезаписывает атрибуты поверх уже имеющихся, нужно чтобы он не менял те что есть Первый атрибут везде SPB было name attrib2 SPB-COMP-003 <не задано> SPB-COMP-004 <не задано> SPB-COMP-005 <не задано> SPB-COMP-006 005 SPB-COMP-007 001 SPB-COMP-008 <не задано> SPB-COMP-010 <не задано> Первый запуск: SPB-COMP-003 002 SPB-COMP-004 003 SPB-COMP-005 004 SPB-COMP-006 006 SPB-COMP-007 007 SPB-COMP-008 008 SPB-COMP-010 009 На второе выполнение: SPB-COMP-003 001 SPB-COMP-004 005 SPB-COMP-005 010 SPB-COMP-006 011 SPB-COMP-007 012 SPB-COMP-008 013 SPB-COMP-010 014 Третье SPB-COMP-003 002 SPB-COMP-004 003 SPB-COMP-005 004 SPB-COMP-006 006 SPB-COMP-007 007 SPB-COMP-008 008 SPB-COMP-010 009 |
|
Отправлено: 10:46, 28-08-2018 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:50, 28-08-2018 | #6 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Kazun, нумерация будет дублироваться
|
Отправлено: 11:13, 28-08-2018 | #7 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Спасибо, работает, это круто...
|
Отправлено: 11:15, 28-08-2018 | #8 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Kazun, Можешь помочь адаптировать этот скрипт чтобы он выполняясь на локальной машине выдавал свободный инвентарный номер основываясь на Атрибуте1(берется из переменной(ее получает другой скрипт)) и основываясь на уже имеющихся Атрибуте2 в AD
Например уже есть в AD компьютеры: Имя Атрибут2 Атрибут1 SPB-COMP-003 002 SPB SPB-COMP-004 003 SPB SPB-COMP-005 SPB MSK-COMP-006 MSK SPB-COMP-007 007 SPB SPB-COMP-008 SPB SPB-COMP-010 009 SPB Когда я выполняю скрипт на компьютере MSK-COMP-006, то скрипт возвращает значение 001 Когда я выполняю скрипт на компьютере SPB-COMP-008, то скрипт возвращает значение 004 Это нужно для автоматизации получения имени компьютера перед вводом в домен |
Отправлено: 10:08, 29-08-2018 | #9 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Заранее создать учетную запись компьютера с уже заданными Атрибут1 и Атрибут2, а не городить подобные решения.
|
Отправлено: 10:22, 29-08-2018 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|