рдПрдХреНрдЯрд┐рд╡ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдЧреНрд░реБрдкреНрд╕ рдФрд░ рдпреВрдЬрд░реНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдореНрдмрд╛ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ OSE рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдЫрд╡рд┐

1. рд▓реЗрдЦрдХ рдХреЗ рдХреБрдЫ рд╢рдмреНрдж


рд▓реЗрдЦ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдПрдХ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдореБрдЭреЗ AD рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕реНрд╡рдд: рдЧрдарди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред

2. рд╕реНрд░реЛрдд рдбреЗрдЯрд╛


рд╕рд░реНрд╡рд░ рдУрдПрд╕ : рд╕реЗрдВрдЯреЛрд╕ 7

рдУрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, CentOS7 рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдХрдорд╛рдВрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрдЧрд╛, рдФрд░, рд╕рдВрднрд╡рддрдГ, рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реНрдерд╛рдиред рдХрд╛рд░реНрдп рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬреЛрдореНрджреНрд░рд╛ cmdlets рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдВрддрд░ рдХрдо рд╕реЗ рдХрдо рд╣реЛрдЧрд╛ред

рдЬреЛрдореНрдмреНрд░рд╛ рдбреЛрдореЗрди : zimbramail.home.local
рдЬреЛрдореНрдмрд╛ рдореЗрдЬрдмрд╛рди рдкрд░ рдЧреЗрдВрджреЛрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ : / mnt / ZM /

3. рд╕реЗрдЯрдЕрдк


  1. рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдмреЙрд▓ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдмреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдмрдврд╝рддреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЦреБрдж рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ред
  2. рд╣рдо AD рдореЗрдВ рдПрдХ рдЕрд▓рдЧ OU рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрд▓рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯреЛрдВ рдХреЛ рдЬрд╝рд┐рдЪрд░рд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо = рд╡рд┐рддрд░рдг рд╕реВрдЪреА рдХрд╛ рдирд╛рдоред
  3. рдирдП рдУрдпреВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдореНрд░рд╛ рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкреЙрдкреБрд▓реЗрдЯреЗрдб рд╣реЛрдЧреАред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рд▓рдХреНрд╖реНрдп OU рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред Get-ADGroupMember рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред
  4. рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВред
  5. рд╣рдо рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
  6. рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред


3.1ред OU рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдореИрдВрдиреЗ рдбреЛрдореЗрди рдХреЗ рдореВрд▓ рдореЗрдВ OU "AcronraDL" рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╕рдореВрд╣ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдпреЗ рд╕рдореВрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВред рд╡реЗ рдЬрд╝рд┐рдореНрдмрд╛рд░рд╛ рд╕рд╣рдпреЛрдЧ OSE рдореЗрдВ рд╡рд┐рддрд░рдг рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдЧрдарди рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдбреЛрдореЗрди рдХреЗ рдЬреАрд╡рди рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрдВрдЧреЗред

4. AD рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ


PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ
$Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile } #  if(test-path $Path) { Remove-Item $Path -Recurse -Force } #   if(!(Test-Path $Path)) { New-Item -ItemType Directory -Force -Path $Path } if(!(Test-Path $Path\Groups)) { New-Item -ItemType Directory -Force -Path $Path\Groups } if(!(Test-Path $Path\Users)) { New-Item -ItemType Directory -Force -Path $Path\Users } if(!(Test-Path $Path\UsersTemp)) { New-Item -ItemType Directory -Force -Path $Path\UsersTemp } #   Import-Module ActiveDirectory Get-AdGroup -filter * -SearchBase "OU=ZimbraDL,DC=home,DC=local" | select samaccountname | Out-File $Path\Groups\GetGroupsAD.txt #   (Get-Content "$Path\Groups\GetGroupsAD.txt") -notmatch "samaccountname" | where {$_ -ne ""} | where {$_ -ne "--"} | Where-Object {$_ -notmatch '-'} | out-file "$Path\Groups\GetGroupsAD.txt" $File = @(Get-Content $Path\Groups\GetGroupsAD.txt) foreach ($File1 in $File) { $string=$File1.TrimStart('"') $string=$string.TrimEnd('"') $string=$string.TrimStart(' ') $string=$string.TrimEnd(' ') | Out-File $Path\Groups\GroupsListTemp.txt -Append } #   Remove-Item $Path\Groups\GetGroupsAD.txt -Force $InputFile = gc $Path\Groups\GroupsListTemp.txt $OutputFile = "$Path\Groups\GroupsList.txt" #  foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line } #   Remove-Item $Path\Groups\GroupsListTemp.txt -Force #        $GroupName = @(Get-Content $Path\Groups\GroupsList.txt) Foreach ($Group in $GroupName) { Get-ADGroupMember $Group -recursive | ft SamAccountName | out-file "$Path\UsersTemp\$Group.txt" -Append (get-content "$Path\UsersTemp\$Group.txt") -notmatch "Name" | where {$_ -ne ""} | where {$_ -ne "--"} | Where-Object {$_ -notmatch '-'} | out-file "$Path\UsersTemp\$Group.txt" $File=@(Get-Content $Path\UsersTemp\$Group.txt) foreach ($File1 in $File) { $string=$File1.TrimStart('"') $string=$string.TrimEnd('"') $string=$string.TrimStart(' ') $string=$String.TrimEnd(' ') | Out-File "$Path\UsersTemp\$Group" -Append } $InputFile = gc $Path\UsersTemp\$Group $OutputFile = "$Path\Users\$Group" #  foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line } } #    Remove-Item "$Path\UsersTemp\" -Recurse -Force Remove-Item "$Path\Groups" -Recurse -Force 


4.1ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ


  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рд╡рд┐рд▓реЛрдкрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЛрдЧреБрдирд╛ рди рд╣реЛред
  2. PoSh рдирд┐рд░реНрджрд┐рд╖реНрдЯ OU рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ GetGroupsAD.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ
  3. рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреБрдЫ рднреА рдХрдо рдирд╣реАрдВ рд╣реИ (PoSh рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╡рд┐рднрд╛рдЬрдХ "----" рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕рдореВрд╣ рдПрдХ рд╕реЗ рдПрдХ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ), рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред "windows-1251" рд╕реЗ utf-8 рддрдХ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓ GroupList.txt рд╣реИ
  4. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдореВрд╣реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝реА рдЬрд╛рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ (samAccountName)
    \ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдореВрд╣ рдирд╛рдо рд╕реЗ рдкреБрдХрд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ


4.2ред рдПрдХрд▓ рд╕рдореВрд╣ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рдХреЗрд╡рд▓ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдПрдХ рд╕рдореВрд╣ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╣рд╛рде рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
 $Path = "C:\ZM\ZimbraDL" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile } #  if(test-path $Path) { Remove-Item $Path -Recurse -Force } #   if(!(test-path $Path)) { New-Item -ItemType Directory -Force -Path $Path } if(!(Test-Path $Path\Groups)) { New-Item -ItemType Directory -Force -Path $Path\Groups } if(!(Test-Path $Path\Users)) { New-Item -ItemType Directory -Force -Path $Path\Users } if(!(Test-Path $Path\UsersTemp)) { New-Item -ItemType Directory -Force -Path $Path\UsersTemp } #   Import-Module ActiveDirectory $Groupname = Read-Host '  ,   ,  ALL     ' If ($Groupname -eq "ALL") { Get-AdGroup -filter * -SearchBase "OU=ZimbraDL,DC=home,DC=local" | select samaccountname | Out-File $path\Groups\GetGroupsAD.txt } Else { $Groupname > "$Path\Groups\GetGroupsAD.txt" } #   (Get-Content "$Path\Groups\GetGroupsAD.txt") -notmatch "samaccountname" | where {$_ -ne ""} | where {$_ -ne "--"} | Where-Object {$_ -notmatch '-'} | out-file "$Path\Groups\GetGroupsAD.txt" $File = @(Get-Content $Path\Groups\GetGroupsAD.txt) foreach ($File1 in $File) { $string=$File1.TrimStart('"') $string=$string.TrimEnd('"') $string=$string.TrimStart(' ') $string=$string.TrimEnd(' ') | Out-File $Path\Groups\GroupsListTemp.txt -Append } Remove-Item $Path\Groups\GetGroupsAD.txt -Force $InputFile = gc $Path\Groups\GroupsListTemp.txt $OutputFile = "$Path\Groups\GroupsList.txt" foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line } Remove-Item $Path\Groups\GroupsListTemp.txt -Force #        $GroupName = @(Get-Content $Path\Groups\GroupsList.txt) Foreach ($Group in $GroupName) { Get-ADGroupMember $Group -recursive | ft SamAccountName | out-file "$Path\UsersTemp\$Group.txt" -Append (get-content "$Path\UsersTemp\$Group.txt") -notmatch "Name" | where {$_ -ne ""} | where {$_ -ne "--"} | Where-Object {$_ -notmatch '-'} | out-file "$Path\UsersTemp\$Group.txt" $File=@(Get-Content $Path\UsersTemp\$Group.txt) foreach ($File1 in $File) { $string=$File1.TrimStart('"') $string=$string.TrimEnd('"') $string=$string.TrimStart(' ') $string=$String.TrimEnd(' ') | Out-File "$Path\UsersTemp\$Group" -Append } $InputFile = gc $Path\UsersTemp\$Group $OutputFile = "$Path\Users\$Group" foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line } } Remove-Item "$Path\UsersTemp\" -Recurse -Force Remove-Item "$Path\Groups" -Recurse -Force 



5. рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреИрд╢ рдХрд░реЗрдВ


рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдмрд┐рд▓реНрд▓реА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░, рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрдкрдардиреАрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
 #!/bin/bash #  #    Path="/mnt/ZM/ZimbraDL" #  Zimbra Domain="zimbramail.home.local" #   zmprov zmprov="/opt/zimbra/bin/zmprov" #  - log="/mnt/ZM/DLlog.txt" #       DLnames="/mnt/ZM/DLnames" #       UserNames="/mnt/ZM/Usernames" #   echo "  ..." ls $Path/Users > $DLnames if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo echo -en "ls directory for Groups correct $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "ls directory for Groups INcorrect $(date +%T)\n" >> $log fi #   echo "   " for DLname in $( cat $DLnames); do #    echo "    $DLname..." Result=$($zmprov gdl $DLname@$Domain) if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo -en "DL $DLname exist $(date +%T)\n" >> $log #   echo -en "Start deleting DL for group $DLname $(date +%T)\n" >> $log echo "   $DLname..." $zmprov ddl $DLname@$Domain if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo echo -en "DL for group $DLname is deleted in $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "DL for group $DLname is NOT deleted in $(date +%T)\n" >> $log fi else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]" echo echo -en "DL $DLname not exist! $(date +%T)\n" >> $log fi done for DLname in $( cat $DLnames); do #   echo -en "Start create DL for group $DLname $(date +%T)\n" >> $log echo "     AD $DLname..." $zmprov cdl $DLname@$Domain if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo echo -en "DL for group $DLname is created in $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "DL for group $DLname is NOT created in $(date +%T)\n" >> $log fi #   echo "  " for UserName in $( cat $Path/Users/$DLname); do echo "     $UserName..." Result=$($zmprov gmi $UserName@$Domain) if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo echo -en "MilBox for user $UserName exist $(date +%T)\n" >> $log echo "  $UserName    $DLname@$Domain..." $zmprov adlm $DLname@$Domain $UserName@$Domain if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6) [OK]" echo echo -en "User $UserName added in $DLname@$Domain correctly in $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "DL for group $DLname is NOT created in $(date +%T)\n" >> $log fi else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "MilBox for user $UserName is NOT exist $(date +%T)\n" >> $log fi done done #   echo "  " echo "    ..." echo -n > $DLnames if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo -en "File $DLnames was successfull cleared in $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "File $DLnames was NOT cleared in $(date +%T)\n" >> $log fi # ,      echo "   $Path    ..." rm -rf $Path if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo -en "Directory $Path was seccessfull deleted in $(date +%T)\n" >> $log else echo -n "$(tput hpa $(tput cols))$(tput cub 6) [FAIL]" echo echo -en "Directory $Path was NOT deleted in $(date +%T)\n" >> $log fi #  -      echo -en "Job complete in $(date +%T)\n" >> $log echo -en "____________________________________\n" >> $log 


5.1ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ


  1. рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА рд▓рд┐рдЦреЗрдВ
  2. рдЬрд╝рд┐рдореНрдмреНрд░рд╛ рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
  3. рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдПрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднрд░реЗрдВ (рд╡рд┐рддрд░рдг рд╕реВрдЪреА рдХреА рдЖрдИрдбреА рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ, рдпрд╣ рдбреАрдПрд▓ рдмрдирд╛рддреЗ рд╕рдордп zmprov cmdlet рдХрд╛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ)ред рдпрд╣ рдЬреЛрдореНрдмреНрд░рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрд▓рдмреЙрдХреНрд╕реЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдореЗрд▓рдмреЙрдХреНрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛрдЬрд░рд╛ рдСрдЯреЛрдкреНрд░реЛрд╡ рдПрдЧрд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрд╕рдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
  4. рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ
  5. рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣рдЯрд╛рдПрдВ

6. рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд╛рд░реНрдп рдХрдард┐рди рдирд╣реАрдВ рдерд╛, рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдкрд╛рд╡рд░рд╢реЗрд▓ рд╕реЗ рдмреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдереАред рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкреЛрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛реЕрд╢-рдбрд╛рдЗрдЬреЗрдмрд▓ рд░реВрдк рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЦреЛрдЬ рдХреЗ рдХрдИ рджрд┐рдиреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдерд╛:

рд░рд┐рдХреЛрдбрд┐рдВрдЧ рдлрдВрдХреНрд╢рди
 $InputFile = gc File1.txt $OutputFile = "File2.txt" $enc = [system.text.encoding] function ReCode ( $f, $t, $line ) { $cp1 = $enc::getencoding( $f ) $cp2 = $enc::getencoding( $t ) $inputbytes = $enc::convert( $cp1, $cp2, $cp2.getbytes( $line )) $outputstring = $cp2.getstring( $inputbytes ) $outputstring | add-content $OutputFile } foreach ($line in $InputFile) { ReCode -f "windows-1251" -t "utf-8" $line } 


рд╢рд╛рдпрдж рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

7. рдкреБрдирд╢реНрдЪ:


рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рддреАрд╕рд░рд╛ рд▓реЗрдЦ рд╣реИ "рдореИрдВ рдЗрдореНрдкреНрд░реВрд╡реНрдб рдЬреЛрдореНрдмреНрд░рд╛ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред" рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди, LDAP рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ AD рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрд▓рдмреЙрдХреНрд╕реЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдпрд╣реАрдВ ред рджреВрд╕рд░рд╛, рдЕрдкрдиреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреЙрдХреНрд╕реЛрдВ рдореЗрдВ рдЬрд┐рдореНрдмреНрд░рд╛ рдХреЗ рдмреИрдХрдЕрдк рдФрд░ рд░рд┐рдХрд╡рд░реА рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣рд╛рдБ рд╣реИ ред

Source: https://habr.com/ru/post/hi443166/


All Articles