2014-09-10 4 views
0

하나의 GroupOfNames 개체를 사용하고 첫 번째 그룹 구성원과 함께 두 번째 그룹을 만드는 스크립트를 작성하고 있습니다. 나는이는 $ obj가 작성되는 실행하고 나는 GroupOfNames 정보와 회원의 목록을 모두 표시 할 수 있습니다 때GroupOfNames Active Directory 개체를 복제하려면 어떻게해야합니까?

$obj = Get-ADObject -Server "$server" -SearchBase $SearchBase -Filter "name -eq '$GroupName'" -Properties Member 
New-ADObject -Server "$server" -Path $SearchBase -Type 'GroupOfNames' -name "$NewGroupName" -OtherAttributes @{'Member'= ($($obj.Member))} 

: 그것은 코드의 아주 간단한 조각 될 것 같다. 그것은 New-ADObject cmdlet을 호출 할 때, 나는 다음과 같은 오류 얻을 : 내가 코드의 여러 변화를 시도했습니다

New-ADObject : Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running. 

및 모든 유사한 오류와 함께 실패합니다.

흥미롭게도 회원 목록을 반복하여 한 번에 하나씩 그룹에 추가하면 작동하지만 너무 길어 (1 시간 + vs 초).

답변

0

를, 내가 신뢰성에 대해 추가 할 수 있다는 것을 발견 한 번에 6000 명의 회원. 기본 흐름은 다음과 같습니다.

(Get-ADObject -Server "$server" -SearchBase $SearchBase -Filter { name -eq "$GroupName" } -Properties Member).Member | %{ 
    $SubList += [string] $_ 
    if($SubList.count -ge 6000) { 
     Set-ADObject -Server "$server" -Identity $NewGroup -Add @{'Member'= ($SubList)} 
     $SubList = @() 
    } 
} 
if($SubList.count -gt 0) { 
    Set-ADObject -Server "$server" -Identity $NewGroup -Add @{'Member'= ($SubList)} 
} 

올바른 방향으로 밀기 위해 @Raf에 감사드립니다.

0

는 문자열 배열에, 당신의 첫 번째 쿼리, ADPropertyValueCollection의 결과를 캐스트,이 시도 (안된!) : 시행 착오 후

$obj = Get-ADObject -Server "$server" -SearchBase $SearchBase 
    -Filter "name -eq '$GroupName'" -Properties Member 
$m = [string[]]$obj.Member 
New-ADObject -Server "$server" -Path $SearchBase -Type 'GroupOfNames' 
    -name "$NewGroupName" -OtherAttributes @{'Member'= $m} 
+0

의견을 보내 주셔서 감사합니다. 변경 없음. 같은 오류가 발생합니다. $ m = $ member |와 같은 다른 조합도 시도했습니다. % { " '$ ($ _)'"), 문자열을 따옴표로 묶어야한다고 생각했습니다. 모든 조합은 지금까지 실패했습니다. – North2Alaska

+0

오류는 분명히 빨간 청어입니다. '$ error [0] | fl * -Force' 오류가 발생하면 상황에 대해 더 많은 정보를 얻을 수 있습니다. – Raf

+0

당신이 옳다고 생각합니다. 위에서 코드를 가져 와서 많은 양의 오류 정보가 나타납니다. 가장 많은 이야기는 '메시지 처리 중 오류가 발생했거나 원격 호스트에서 수신 제한 시간을 초과했거나 내부 네트워크 리소스 문제로 인해 발생할 수 있습니다. 로컬 소켓 타임 아웃은 '00 : 02 : 00''입니다. AD 모듈을 사용하여 2 분 타임 아웃을 발견하기 위해 몇 가지 추가 조사를했습니다. ADO 또는 다른 방법을 사용하여 재 작업해야 할 것처럼 보입니다. 제안? – North2Alaska