Thursday, November 21, 2019

Как перенести локальные группы и пользователей с одного сервера на другой

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

Есть 2 способа:


1. Сделать полный експорт и импорт всех учеток и локальных групп с помощью -
Windows Server Migration Tools

2. Если необходимы только группы, с доменными группами, как было неоходимо мне, то необходим скрипт на PowerShell, который я нашел тут.
Export:
$gr = Get-WMIObject Win32_Group -Filter "LocalAccount=true AND SID like 'S-1-5-21-%'" | Foreach {$_.Name}
$gr | Foreach {
 $group = $_
 $g = [ADSI]"WinNT://$env:ComputerName/$group,group"
 $members = $g.Members()
 if($members) 
 {
  $members | Foreach {
   $p = $_.GetType().InvokeMember('Parent','GetProperty',$null,$_,$null)
   if($p -notmatch $env:ComputerName) {
    $bytes = $_.GetType().InvokeMember('objectSid','GetProperty',$null,$_,$null)
    $sid = New-Object Security.Principal.SecurityIdentifier ($bytes, 0)
    if($sid.Value -match "S-1-5-21") {
     New-Object PSObject -Property @{
      Group = $group
      Name = $sid.Translate([Security.Principal.NTAccount]).Value
     }
    }
   }
  }
 }
} |  Export-Csv -NoTypeInformation gr.csv -Encoding Unicode

Import:
Import-Module Microsoft.PowerShell.LocalAccounts
Import-Csv gr.csv | Foreach {
 $group = Get-LocalGroup $_.Group -ErrorAction SilentlyContinue
 if (!$group) {
  $group = New-LocalGroup $_.Group
 }
 Add-LocalGroupMember -Group $group -Member $_.Name
}

No comments:

Post a Comment