GPO 이관 문의 2

안녕하세요. 항상 친절한 답변 감사합니다.


일전에 GPO 이관 관련하여 문의 드렸었습니다.


추가로  A 도메인 에 모든 GPO를 XML 파일 로 백업  받는 방법과 

백업받은 XML을 

B도메인에 XML 파일을 Powershell 추가하  방법에 대해서 궁금 합니다.



감사합니다.


태그가 없습니다.

3개의 답변이 있습니다.

0 추천 | 26일 전

참고해서 진행해 보세요.


GPO를 백업하고 PowerShell을 사용하여 다른 도메인에서 복원하려면,


1.도메인 A에서 모든 GPO 백업

- PowerShell에서 'Backup-Gpo' cmdlet을 사용하여 도메인의 모든 GPO 백업

(예) 
$BackupPath = "C:\GPOBackup"
Backup-Gpo -All -Path $BackupPath -Comment "Backup of all GPOs from Domain A"


2.GPO를 도메인 B로 복원하거나 가져오기

도메인 B에서는 'Import-Gpo' cmdlet을 사용하여 백업된 GPO 가져오기

백업 폴더를 그룹 정책 관리 도구가 설치된 도메인 B에 복사


(예) 
$BackupPath = "C:\GPOBackup"  # Path to the backed-up GPOs

$GpoList = Get-ChildItem -Path $BackupPath -Directory


foreach ($Gpo in $GpoList) {

    $GpoBackupPath = Join-Path -Path $BackupPath -ChildPath $Gpo.Name

    $GpoBackup = Get-GpoBackup -Path $GpoBackupPath

    Import-Gpo -BackupId $GpoBackup.Id -TargetName $GpoBackup.DisplayName -Path $GpoBackupPath

}



** 고려사항은, 

1. 도메인 A와 도메인 B 모두에 필요한 권한이 있는지 확인
2. OU 및 보안 필터에 대한 링크는 기본적으로 복원되지 않으며 도메인 B에서 수동으로 다시 만들어야 할 수도 있음
3. 도메인 A와 도메인 B의 AD 구조가 서로 다른 경우 일부 GPO 설정이 예상대로 적용되지 않을 수 있으므로 그에 따라 조정해야 할 수도 있음

Reply

댓글 남기기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

0 추천 | 26일 전

# 도메인 간 GPO 백업 및 복원 가이드


이 가이드는 도메인 A에서 모든 GPO(그룹 정책 개체)를 XML 파일로 백업하고, 이를 도메인 B에 PowerShell을 사용하여 복원하는 방법을 단계별로 설명합니다.


## 1. 도메인 A에서 모든 GPO를 XML 파일로 백업하기


### Step 1: GPMC 모듈 설치


GPO를 관리하기 위해 `Group Policy Management Console (GPMC)` 모듈이 필요합니다. 이 모듈이 설치되어 있지 않다면, 관리자 권한의 PowerShell에서 다음 명령어로 설치할 수 있습니다:


```powershell

Install-WindowsFeature -Name GPMC

```


### Step 2: 모든 GPO를 XML로 백업


다음 PowerShell 스크립트를 사용하여 도메인 A의 모든 GPO를 XML 파일로 백업합니다:


```powershell

# GPMC 모듈 임포트

Import-Module GroupPolicy


$GPOs = Get-GPO -All

$BackupDirectory = "C:\GPO_Backups\"


# 백업 폴더가 없으면 생성

if (-not (Test-Path $BackupDirectory)) {

    New-Item -ItemType Directory -Path $BackupDirectory

}


foreach ($GPO in $GPOs) {

    $GPOName = $GPO.DisplayName -replace '[\\/:*?"<>|]', '_'  # 파일 이름으로 사용할 수 없는 문자 제거

    $BackupPath = Join-Path -Path $BackupDirectory -ChildPath "$GPOName.xml"

    $GPO | Export-GPO -Path $BackupDirectory -BackupGpoName $GPOName

    Rename-Item -Path "$BackupDirectory\{$($GPO.Id)}" -NewName "$GPOName.xml"

}

```


이 스크립트는 `C:\GPO_Backups\` 폴더에 모든 GPO를 XML 파일로 백업합니다.


## 2. 도메인 B에 XML 파일을 PowerShell로 복원하기


### Step 1: XML 파일 복원 및 GPO 생성


도메인 B에서 다음 스크립트를 실행하여 백업된 XML 파일을 사용해 GPO를 생성하고 설정을 복원합니다:


```powershell

# GPMC 모듈 임포트

Import-Module GroupPolicy


$ImportDirectory = "C:\GPO_Backups\"

$XMLFiles = Get-ChildItem -Path $ImportDirectory -Filter *.xml


foreach ($XMLFile in $XMLFiles) {

    $GPOName = $XMLFile.BaseName

    $NewGPO = New-GPO -Name $GPOName


    # GPO 설정을 도메인 B에 복원

    Import-GPO -BackupGpoName $GPOName -TargetName $GPOName -Path $ImportDirectory -MigrationTable $null

}

```


이 스크립트는 도메인 B에 새로운 GPO를 생성하고, 백업된 XML 파일을 사용하여 해당 설정을 적용합니다.


## 주의사항


1. 권한: 두 도메인에서 이 작업을 수행하려면 적절한 관리자 권한이 필요합니다.


2. GPO 설정의 호환성: 두 도메인 간에 정책이 완전히 동일하게 작동하지 않을 수 있습니다. 특히 도메인별로 달라질 수 있는 설정(예: SID, 경로 등)은 주의가 필요합니다.


3. SID 및 도메인 특정 설정: 일부 설정은 도메인 간 이동 시 수동으로 수정해야 할 수 있습니다. 마이그레이션 테이블을 사용하여 이러한 문제를 해결할 수 있습니다.


4. 링크 및 권한: GPO 자체는 복원되지만, OU 구조나 GPO 링크, 보안 필터링 등은 수동으로 재구성해야 할 수 있습니다.


5. 테스트: 실제 환경에 적용하기 전에 테스트 환경에서 먼저 시도해보는 것이 좋습니다.


이 가이드를 통해 도메인 A의 GPO를 백업하고 도메인 B로 이관할 수 있습니다. 각 환경에 맞게 스크립트를 조정하여 사용하시기 바랍니다.

Reply

댓글 남기기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

1st 5stars

1 추천 | 27일 전

export 할때는 아래 링크 자료를 참고해서

https://thegiamarie.com/2022/03/28/export-all-gpos-in-a-domain-to-xml-or-html/



$folderpath = "C:\path\to\existing\folder\"

$AllGpos = get-gpo -all

ForEach($g in $AllGpos)

{

    $filename = $g.DisplayName

    $fullpath = join-path -path $folderpath -ChildPath $filename

    $Gpo = Get-GPOReport -reporttype xml -guid $g.Id -path $fullpath


}

get-childitem -path $folderpath | Rename-Item -NewName { $PSItem.Name + ".xml" }


와 같이 명령을 사용하면 될것 같고...



import할때는 

아래 링크 참조해서

https://johnpenford.wordpress.com/2015/02/27/import-gpos-from-one-domain-to-another-using-powershell/


Import-Module ActiveDirectory            

Import-Module GroupPolicy  

$app = new-object -com Shell.Application

$folder = $app.BrowseForFolder(0, "Select Folder", 0, "C:\")

$GPOFolderName = $folder.Self.Path

$import_array = get-childitem $GPOFolderName | Select name

foreach ($ID in $import_array) {

    $XMLFile = $GPOFolderName + "\" + $ID.Name + "\gpreport.xml"

    $XMLData = [XML](get-content $XMLFile)

    $GPOName = $XMLData.GPO.Name

    import-gpo -BackupId $ID.Name -TargetName $GPOName -path $GPOFolderName -CreateIfNeeded

}


와 같은 형식으로 명령을 사용하면 되지 않을까 싶네요.

Reply

댓글 남기기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

답변 달기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

IT 솔루션 또는 하드웨어 도입을 검토 중 이신가요?

쉐어드IT 솔루션 상담실에서 믿을 수 있는 제품과 업체를 추천 받으실 수 있습니다.

솔루션 상담실 IT 컨시어지 서비스

IT운영 카테고리의 다른 질문들...

  • 약 4시간 전
  • 댓글 : 약 4시간 전
  • 5일 전
  • 댓글 : 약 24시간 전
  • 6일 전
  • 댓글 : 5일 전
  • 6일 전
  • 댓글 : 하루 전
  • 8일 전
  • 댓글 : 6일 전
  • 8일 전
  • 댓글 : 7일 전