Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

PowerShell로 OU 관리 및 개체 이동하기

PowerShell로 OU 관리 및 개체 이동하기

Jun 17, 2023

조직 구성 단위(OU)는 Active Directory 에서 사용자가, 그룹과 컴퓨터뿐만 아니라 다른 OU도 저장할 수 있는 컨테이너입니다. 각 AD 도메인 은 자체적인 OU 계층 구조를 가질 수 있습니다.

이 글에서는 OU 관리에 대해 알아보고, PowerShell 스크립트를 사용해 AD에서 조직 구성 단위를 만들고, 이동하고, 삭제하는 방법을 배웁니다. 또한 그룹 정책 을 OU에 연결하고, 컴퓨터 및 사용자 계정을 다른 OU로 이동하는 방법도 다룹니다.

PowerShell ISE는 PowerShell 스크립트를 작업하기에 가장 좋은 도구입니다. “Windows+R”을 누른 다음 실행(Run) 창에 “runas /profile /user:Administrator PowerShell_ISE”를 입력하여 관리자 권한으로 PowerShell ISE 도구를 실행하세요. 메시지가 표시되면 관리자 비밀번호를 입력합니다. 또는 PowerShell ISE 아이콘을 마우스 오른쪽 버튼으로 클릭하고 “관리자 권한으로 실행” 옵션을 선택할 수도 있습니다.

AD 및 그 개체를 작업하려면 Windows PowerShell용 Active Directory 모듈을 가져와야 합니다. Microsoft Windows Server 2008 R2에서는 다음 명령을 실행하여 이 모듈을 활성화해야 합니다:

      Import-Module ActiveDirectory
      

Microsoft Windows Server 2012 이후 버전에서는 이 모듈이 기본적으로 활성화되어 있습니다.

PowerShell로 Active Directory 도메인에서 OU 만들기

다음을 사용하여 Active Directory에서 새 조직 구성 단위를 만들 수 있습니다. New-ADOrganizationalUnit cmdlet을 사용하고 새 OU 개체의 이름을 지정하면 됩니다. 기본적으로 PowerShell은 도메인 루트에 OU를 만듭니다. 아래 명령은 DC에서 “Regions”라는 이름의 OU를 생성합니다:

      New-ADOrganizationalUnit “Regions”
      

다른 OU LDAP 경로가 필요하면 –Path cmdlet 매개변수를 사용하여 해당 구별 이름(distinguished name)을 지정합니다:

      New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”
      
Directory tree for 'enterprise.com' with folders like 'Managers' and listed user accounts including 'Bill Jackson'.

OU를 다른 LDAP 주소로 이동하기

OU를 다른 위치로 이동해야 한다면 Move-ADObject cmdlet을 사용합니다. 대상 OU가 실수로 삭제되지 않도록 보호되어 있으면 안 됩니다. 보호되어 있다면 다음 명령으로 해당 보호를 제거하세요:

      Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False
      

이제 OU를 다른 위치로 이동할 수 있습니다:

      Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"
      

OU 이름 변경하기

조직 구성 단위를 이름 변경하려면 Rename-ADObject cmdlet을 사용합니다. -Identity 매개 변수는 이름을 바꿀 Active Directory 개체를 지정하며, 고유 이름(distinguished name, DN) 또는 GUID 중 하나를 요구합니다.

이 명령은 “Regions” OU의 이름을 “Districts”로 변경합니다:

      Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts
      

또는 Get-ADOrganizationalUnit cmdlet에 -Filter 매개 변수를 사용하면 됩니다. 이 경우 OU에 대한 전체 LDAP 경로를 요구하지는 않습니다. 다만 해당 cmdlet은 전체 AD를 검색하며, 이름에 검색 용어가 포함된 모든 OU에 작업이 적용됩니다:

      Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries
      

OU에 그룹 정책 적용

OU에 그룹 정책을 할당하려면 New-GPLink cmdlet을 사용합니다. 이 cmdlet은 기본적으로 지정한 그룹 정책 개체(GPO)와 OU 사이에 링크를 생성합니다. 링크에 대해 다음 속성 중 어떤 것이든 지정할 수 있습니다:

  • 사용 — 링크가 사용으로 설정된 경우, 사이트, 도메인 또는 OU에 대해 그룹 정책이 처리될 때 GPO 설정이 적용됩니다.
  • 강제 적용 — 링크가 강제 적용된 경우, 더 낮은 수준의 컨테이너에서는 이를 차단할 수 없습니다.
  • 순서 — 순서는 GPO 설정의 우선 순위를 지정합니다.

다음 명령은 링크를 사용 및 강제로 설정한 상태로 “Block Software” GPO를 “Districts” OU에 연결합니다:

      New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes
      
PowerShell output creating an enabled and enforced Group Policy Link named 'Block Software' targeting 'OU=Districts,OU=IT,DC=enterprise,DC=com'.

컴퓨터와 사용자를 새 OU로 이동

OU를 만들고 필요에 따라 GPO에 연결했다면, 이제 여기에 사용자와 컴퓨터를 채울 차례입니다. PowerShell Move-ADObject cmdlet은 사용자, 컴퓨터, 그룹 또는 다른 OU 같은 어떤 개체든 개체의 집합이든 다른 OU로 이동합니다. -Identity 매개 변수는 이동할 Active Directory 개체 또는 컨테이너가 무엇인지 지정합니다. 개체의 전체 LDAP 경로 또는 SID를 입력해야 하며, SamAccountName은 사용할 수 없습니다. 아래 예시는 사용자(John Brown)를 “Districts” OU로 이동하는 방법을 보여줍니다:

      Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"
      

컴퓨터 개체를 이동할 때도 동일한 구문을 사용합니다. 아래 명령은 컴퓨터 “R07GF”를 “Computers” 컨테이너로 이동합니다:

      Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com
      

CSV 또는 TXT 파일을 사용하여 AD 컴퓨터와 사용자를 다른 OU로 이동

이동할 개체의 미리 정의된 목록이 있다면 이를 CSV 파일로 저장한 다음 해당 파일을 Active Directory에 가져올 수 있습니다. CSV 목록은 다음 형식이어야 합니다:

다음 PowerShell 스크립트를 사용하여 CSV 파일에 나열된 AD 사용자 계정을 이동합니다:

      # Specify target OU. This is where users will be moved.
$TargetOU =  "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable. 
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv" 

$Imported_csv | ForEach-Object {
     # Retrieve DN of user.
     $UserDN  = (Get-ADUser -Identity $_.Name).distinguishedName
     # Move user to target OU.
     Move-ADObject  -Identity $UserDN  -TargetPath $TargetOU
   
 }
      

텍스트 파일에 나열된 AD 컴퓨터 계정을 이동하려면 다음 PowerShell 스크립트를 사용하세요:

      # Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt

# Specify the path to the OU where computers will be moved.
$TargetOU   =  "OU=Districts,OU=IT,DC=enterprise,DC=com" 
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $TargetOU

}
      

AD에서 OU 제거

해당 Remove-ADOrganizationalUnit cmdlet은 OU를 제거합니다. OU는 실수로 인한 삭제로부터 보호되면 안 됩니다. 이름에 “Continents”가 포함된 모든 OU에 대해 실수로 인한 삭제 옵션을 다음 Get-ADOrganizationalUnitSet-ADOrganizationalUnit cmdlet을 사용해 다음과 같이 제거할 수 있습니다:

      Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False
      

다음 명령을 사용하여 이름에 “Continents”가 포함된 모든 OU를 AD에서 제거합니다:

      Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive
      

삭제를 확인하라는 메시지가 표시됩니다:

Confirmation dialog for recursive removal of 'OU=Continents,OU=CEO,DC=enterprise,DC=com', with options Yes, Yes to All, No, No to All, and Suspend.

-Recursive 매개변수는 OU와 해당 OU의 모든 하위 개체를 모두 제거합니다. 삭제 방지 보호가 해당 하위 개체에 대해 켜져 있어도 하위 개체는 삭제됩니다.

결론

이제 PowerShell 스크립트를 사용하여 Active Directory에서 OU를 관리하는 방법을 배웠으므로, OU 관리와 관련된 다양한 간단한 작업을 자동화할 수 있습니다. 이러한 명령을 실행하기 전에 Active Directory Recycle Bin feature 를 활성화하여 잘못 삭제한 경우에도 쉽게 되돌릴 수 있도록 하세요. 또한 조직 구성 단위에 대한 모든 변경 사항을 세심하게 추적하는 것도 현명한 방법입니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Jeff Melnick

시스템 엔지니어링 디렉터

Jeff는 Netwrix의 Global Solutions Engineering 분야 전(前) 디렉터입니다. 그는 오랜 기간 Netwrix 블로거이자 연사, 프레젠터로 활동해 왔습니다. Netwrix 블로그에서 Jeff는 시스템 관리 경험을 크게 향상시킬 수 있는 라이프해킹, 팁, 트릭을 공유합니다.