이전 글에서 GPO 로그온 스크립트에 Set-ADComputer cmdlet을 활용해 현재 로그인한 사용자 정보를 각 AD 컴퓨터 개체의 속성에 저장하는 방법을 소개한 바 있습니다. 이에 대해 한 독자가 타당한 지적을 했는데, 이 방식을 사용하려면 모든 사용자 컴퓨터에 Windows PowerShell용 Active Directory가 포함된 RSAT를 설치해야 하고, 이는 상당히 번거로운 작업이라는 것이었습니다.
그래서 사용자 컴퓨터에 RSAT를 설치하지 않고도 PowerShell ActiveDirectory 모듈의 cmdlet을 사용할 수 있는지 직접 테스트해 보았고, 실제로 가능하다는 것을 확인했습니다!
사전 준비: AD 모듈 파일 복사
RSAT 및 RSAT-AD-PowerShell 모듈이 설치된 Windows Server 2012 R2 서버가 있다고 가정하겠습니다. 목표는 RSAT-AD-PowerShell 파일을 사용자 워크스테이션으로 복사한 후 가져와(import) 다양한 AD 모듈 cmdlet을 실행하는 것입니다. 여기서는 의도적으로 Windows 10 LTSC(1809 빌드 기반) 컴퓨터를 워크스테이션으로 사용하여, 구버전의 RSAT-AD-PowerShell이 최신 OS에서도 정상적으로 작동함을 보여드리겠습니다.
먼저 Windows Server 2012 R2에서 Windows 10으로 AD 모듈 파일 전체를 복사합니다. C:\PS\ADPoSh 폴더를 생성한 뒤, C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory의 모든 내용을 해당 폴더로 복사하세요.
WinSxS 폴더에서 DLL 파일 복사
다음으로 C:\Windows\WinSxS 폴더에서 아래 두 파일을 추가로 복사해야 합니다.
- Microsoft.ActiveDirectory.Management.dll
- Microsoft.ActiveDirectory.Management.resources.dll
이 라이브러리는 WinSxS 폴더를 검색하면 찾을 수 있습니다. 본 예제에서 Windows Server 2012 R2에서의 전체 경로는 다음과 같습니다.
"C:\Windows\WinSxS\amd64_microsoft.activedirectory.management_31bf3856ad364e35_6.3.9600.16503_none_09aa35cd49da6068\Microsoft.ActiveDirectory.Management.dll"
"C:\Windows\WinSxS\amd64_microsoft.activedir..anagement.resources_31bf3856ad364e35_6.3.9600.16384_en-us_efefcf68718a71bc\Microsoft.ActiveDirectory.Management.resources.dll"

모듈 임포트 및 사용
이제 C:\PS\ADPoSh 폴더(약 1.3MB)를 RSAT AD 모듈이 설치되어 있지 않은 Windows 10 컴퓨터로 복사합니다.
복사한 Active Directory 모듈을 현재 PowerShell 세션으로 가져와 보겠습니다.
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.resources.dll"

모듈이 성공적으로 임포트되면, Get-ADUser, Get-ADComputer, Get-ADGroup 등 AD 모듈의 모든 cmdlet을 사용해 AD 도메인을 관리하고 정보를 조회할 수 있습니다.

ADWS 연결 오류 해결 방법
모듈 사용 중 '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' 오류가 발생한다면, 가장 가까운 도메인 컨트롤러에서 ADWS(Active Directory Web Services)가 실행 중인지, 그리고 TCP 포트 9389가 방화벽에 의해 차단되지 않았는지 확인해야 합니다.
다음 명령으로 도메인 내에서 ADWS 역할이 활성화된 DC를 찾을 수 있습니다.
Get-ADDomainController -Discover -Service "ADWS"

Test-NetConnection cmdlet을 사용하면 ADWS 서비스의 접근 가능 여부를 확인할 수 있습니다.
Test-NetConnection DC01 -port 9389
특정 도메인 컨트롤러를 대상으로 cmdlet을 실행하려면 -Server 매개변수를 지정하면 됩니다.
Get-ADUser jbrion -server dc01.woshub.com
마무리
이렇게 임포트한 AD 모듈은 PowerShell 세션을 닫기 전까지 계속 사용할 수 있습니다. 또한 GPO를 활용하면 도메인 내 모든 컴퓨터에 AD 모듈 파일을 자동으로 배포할 수 있으므로, 각 클라이언트에 RSAT를 일일이 설치하는 수고를 덜 수 있습니다.