Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить 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