Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Get-AdUser и несколько доменов

Ответить
Настройки темы
PowerShell - [решено] Get-AdUser и несколько доменов

Старожил


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

Профиль | Отправить PM | Цитировать


Доброго времени суток.
Столкнулся с проблемой, не знаю как решить.
Есть скрипт:
Код: Выделить весь код
cls

Import-Module ActiveDirectory

$programmName = "CreateFolder"
$date = Get-Date -Format "yyyy-MM-dd"
$domain1 = "DC=domain1,DC=ru"
$domain2 = "DC=domain2,DC=ru"
$domain3 = "DC=domain3,DC=ru"
$dirForDomain1 = "\\server\"
$dirForDomain2 = "\\server\domain2\"
$dirForDomain3 = "\\server\domain3\"
$logFile = "D:\scripts\logs\" + $programmName + ".log"

#Функция записи логов в файл
function writeLog ($type, $msg) {
	#Преобразуем дату и время в нужный формат
	$date = Get-Date -Format "dd.MM.yyyy HH:mm:ss"
	$msg = $date + "`t" + $type + "`t" + $msg
	#Записываем сообщение в файл
	Out-File -FilePath $logFile -InputObject $msg -Append -encoding unicode
}

function domain1 {
	try {
		$users = Get-ADUser -Filter * -SearchBase $domain1
		foreach ($user in $users) {
			$logonName = $user.SamAccountName
			$user = $user.Name
			$newDir = $dirForDomain1 + $logonName
			if(!(test-path -path $newDir)) {
				$path = New-Item -ItemType Directory -Path $dirForDomain1 -Name $logonName
				$domainUser = "DOMAIN1\" + $logonName
				$args = New-Object system.security.accesscontrol.filesystemaccessrule($domainUser,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow")
				$acl = Get-Acl $path
				$acl.SetAccessRule($args)
				Set-Acl -Path $path -AclObject $acl
				$type = "OK"
				$msg = "Новая папка " + $newDir + " создана"
				writeLog $type $msg
			}
		}
		$type = "Info"
		$msg = "Скрипт выполнен успешно"
		writeLog $type $msg
	}
	catch {
		$type = "Error"
		$msg = "$_"
		writeLog $type $msg
		break
	}
}

function domain2 {
	try {
		$users = Get-ADUser -Filter * -SearchBase $domain2
		foreach ($user in $users) {
			$logonName = $user.SamAccountName
			$user = $user.Name
			$newDir = $dirForDomain2 + $logonName
			if(!(test-path -path $newDir)) {
				$path = New-Item -ItemType Directory -Path $dirForDomain2 -Name $logonName
				$domainUser = "DOMAIN2\" + $logonName
				$args = New-Object system.security.accesscontrol.filesystemaccessrule($domainUser,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow")
				$acl = Get-Acl $path
				$acl.SetAccessRule($args)
				Set-Acl -Path $path -AclObject $acl
				$type = "OK"
				$msg = "Новая папка " + $newDir + " создана"
				writeLog $type $msg
			}
		}
		$type = "Info"
		$msg = "Скрипт выполнен успешно"
		writeLog $type $msg
	}
	catch {
		$type = "Error"
		$msg = "$_"
		writeLog $type $msg
		break
	}
}

domain1
domain2
Так вот, если закомментировать самую последнюю строку "domain2", то скрипт нормально выполняется и нормально пишет в лог. Если строку раскомментировать, то в лог пишется следующее:
Цитата:
09.12.2013 17:25:33 Error Указанное различающееся имя должно принадлежать одному из следующих разделов: "DC=domain1,DC=ru , CN=Configuration,DC=domain1,DC=ru , CN=Schema,CN=Configuration,DC=domain1,DC=ru , DC=DomainDnsZones,DC=domain1,DC=ru , DC=ForestDnsZones,DC=domain1,DC=ru".
Подскажите пожалуйста, можно ли это побороть и сделать так, что бы во второй функции он обращался к domain2 и вытаскивал из него пользователей?

Отправлено: 17:46, 09-12-2013

 

Ветеран


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

Профиль | Отправить PM | Цитировать


Укажите параметр -Server для Get-ADUser:
Get-ADUser -Filter * -SearchBase $domain2 -Server dc.domain2.com
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:49, 09-12-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

Профиль | Отправить PM | Цитировать


Большое спасибо!
Только немного странно, этот вариант сработал, но когда я пробовал тоже самое выполнить через powershell ise

Он выводил такую же ошибку, что и в первом посте.

Отправлено: 08:51, 10-12-2013 | #3


Ветеран


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

Профиль | Отправить PM | Цитировать


Чтобы не гадать, точную ошибку.

Отправлено: 10:00, 10-12-2013 | #4


Старожил


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

Профиль | Отправить PM | Цитировать


Точная ошибка:
Цитата:
09.12.2013 17:25:33 Error Указанное различающееся имя должно принадлежать одному из следующих разделов: "DC=domain1,DC=ru , CN=Configuration,DC=domain1,DC=ru , CN=Schema,CN=Configuration,DC=domain1,DC=ru , DC=DomainDnsZones,DC=domain1,DC=ru , DC=ForestDnsZones,DC=domain1,DC=ru".
Но это как бы уточнение на будущее, т.к. прописывание
Цитата Kazun:
Get-ADUser -Filter * -SearchBase $domain2 -Server dc.domain2.com »
решило проблему.

Отправлено: 11:48, 10-12-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Get-AdUser и несколько доменов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
V. 2010 - Несколько доменов+Exchange и сбор почты с внешнего сервера allianceplayer Microsoft Exchange Server 11 17-08-2012 17:30
V. 2010 - [решено] Несколько обслуживаемых доменов, один IP. Как настраивать DNS? DJ Mogarych Microsoft Exchange Server 10 17-06-2012 09:41
V. 2010 - Один Exchange сервер на несколько доменов AD mr.Den Microsoft Exchange Server 8 19-07-2011 10:55
FreeBSD - DNS: Одно адресное пространство в несколько доменов niklep Общий по FreeBSD 1 14-09-2009 14:44
[решено] Несколько доменов Jekael Microsoft Windows NT/2000/2003 13 14-06-2007 13:10




 
Переход