рдЬрдм рдЖрдк SharePoint рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗ рдХрд░реАрдм рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ 10 рдпрд╛ 20 рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЯреЗрд╕реНрдЯ 1, рдЯреЗрд╕реНрдЯ 2 рдЖрджрд┐ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде 50 рдпрд╛ 100 рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА (9000 рд╕реЗ рдЕрдзрд┐рдХ) рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреИрд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдХрд░реАрдм рд╣реИред
рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рдирдХрд▓реА рдирд╛рдо рдЬреЗрдирд░реЗрдЯрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЕрджреНрднреБрдд рд╕реЗрд╡рд╛
рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ 50,000 рд╕реЗ
рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдирд┐рд░реНрдпрд╛рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рджреЗрд╢ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреБрдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рднреА рдЧреБрдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред
рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ
PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд CSV рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЦрд╛рддреЗ рдмрдирд╛рдПрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдУрдпреВ ("рдбреЗрдореЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛") рдмрдирд╛рдПрдВ, рдЬрд╣рд╛рдВ рд╣рдо рд╕рднреА рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬрдЧрд╣ рджреЗрдВрдЧреЗ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ
Import-Module ActiveDirectory $dn = (Get-ADDomain).DistinguishedName $forest = (Get-ADDomain).Forest Set-ADDefaultDomainPasswordPolicy $forest -ComplexityEnabled $false -MaxPasswordAge "1000" -PasswordHistoryCount 0 -MinPasswordAge 0 $ou = Get-ADOrganizationalUnit -Filter 'name -eq "Demo Users"' if ($ou -eq $null) { New-ADOrganizationalUnit -Name "Demo Users" -Path $dn $ou = Get-ADOrganizationalUnit -Filter 'name -eq "Demo Users"' }
PowerShell рдореЗрдВ CSV рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ
$data = Import-Csv .\<__>.csv
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирдП PowerShell рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ
New-ADUser cmdlet рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЦрд╛рддреЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
$refineddata = $data | select @{Name="Name";Expression={$_.Surname + ", " + $_.GivenName}},` @{Name="SamAccountName"; Expression={$_.Username}},` @{Name="UserPrincipalName"; Expression={$_.Username +"@" + $forest}},` @{Name="GivenName"; Expression={$_.GivenName}},` @{Name="Surname"; Expression={$_.Surname}},` @{Name="DisplayName"; Expression={$_.Surname + ", " + $_.GivenName}},` @{Name="City"; Expression={$_.City}},` @{Name="StreetAddress"; Expression={$_.StreetAddress}},` @{Name="State"; Expression={$_.State}},` @{Name="Country"; Expression={$_.Country}},` @{Name="PostalCode"; Expression={$_.ZipCode}},` @{Name="EmailAddress"; Expression={$_.EmailAddress}},` @{Name="AccountPassword"; Expression={ (Convertto-SecureString -Force -AsPlainText "WictorRocks!")}},` @{Name="OfficePhone"; Expression={$_.TelephoneNumber}},` @{Name="Title"; Expression={$_.Occupation}},` @{Name="Enabled"; Expression={$true}},` @{Name="PasswordNeverExpires"; Expression={$true}}
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдирд╛рдо рдФрд░ DisplayName рдЧреБрдг рд╕рд╣реА рд╣реИрдВ, рдФрд░ UPN рдЬрдВрдЧрд▓ рдХреЗ DNS рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп! рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рдУрдпреВ рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП OUs рдмрдирд╛рдПрдВред рдпрд╣ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдУрдпреВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
$refineddata | % { $subou = Get-ADOrganizationalUnit -Filter "name -eq ""$($_.Country)""" -SearchBase $ou.DistinguishedName if($subou -eq $null) { New-ADOrganizationalUnit -Name $_.Country -Path $ou.DistinguishedName $subou = Get-ADOrganizationalUnit -Filter "name -eq ""$($_.Country)""" -SearchBase $ou.DistinguishedName } $_ | Select @{Name="Path"; Expression={$subou.DistinguishedName}},* | New-ADUser }
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдкрдХреА рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рд╕рдВрднрд╡рдд: рд╡реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рд╛

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА OU рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рднрд░рдирд╛ рд╣реЛрдЧрд╛

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