បង្កើតគណនីដោយស្វ័យប្រវត្តិដោយប្រើ PowerShell ។ តើអ្នកត្រូវការអ្វីខ្លះដើម្បីចាប់ផ្តើម?

ថ្ងៃទី 2 ខែកក្កដា ឆ្នាំ 2012 ម៉ោង 11:09 ល្ងាច

តើធ្វើដូចម្តេចដើម្បី "បោះ" អ្នកប្រើប្រាស់ថ្មី 100,500 យ៉ាងឆាប់រហ័សចូលទៅក្នុង ថតសកម្ម(បានលើកឡើងនៅលើ MS ម៉ាស៊ីនមេវីនដូ 2003) ឬស្គ្រីបសម្រាប់បន្ថែមគណនីអ្នកប្រើប្រាស់ទៅកាន់ Active Directory

  • កម្មវិធីប្រព័ន្ធ

វាបានកើតឡើងដូច្នេះដែលខ្ញុំបានជ្រើសរើសវិជ្ជាជីវៈមួយ។ អ្នកគ្រប់គ្រងប្រព័ន្ធ. ហើយ​ខ្ញុំ​បាន​ធ្វើ​កិច្ចការ​នេះ​មិន​ដឹងគុណ​អស់​រយៈពេល​ជិត ៦ ឆ្នាំ​មក​ហើយ។
កាលពីប៉ុន្មានឆ្នាំមុន ខ្ញុំបានប្រឈមមុខនឹងសំណួរមួយ ដែលក្រោយមកបានក្លាយទៅជាកិច្ចការមួយ ដែលជារបៀបបង្កើតគណនីអ្នកប្រើប្រាស់ថ្មីយ៉ាងឆាប់រហ័សនៅក្នុង AD ក្រោម MS Windows Server 2003?

ខ្ញុំ​គិត​ថា​អ្នក​រាល់​គ្នា​ដឹង​ពី​វិធី​បន្ថែម​អ្នក​ប្រើ​ទៅ​ក្នុង​ដែន ដូច្នេះ​ដើម្បី​និយាយ "ដោយដៃ"។ នោះគឺដើម្បីបន្ថែមគណនីអ្នកប្រើប្រាស់ AD ថ្មី អ្នកត្រូវធ្វើប្រមាណវិធីដូចខាងក្រោម៖ បើក "អ្នកប្រើប្រាស់ និងកុំព្យូទ័រ" ខ្ទាស់នៃ OS ដែលបានរៀបរាប់ខាងលើ បើក OU (Organization Unite) ដែលត្រូវគ្នា ចាប់ផ្តើមណាមួយនៃ វិធីសាស្រ្តដែលគេស្គាល់បង្កើតអ្នកប្រើប្រាស់ ហើយបន្ទាប់មកនៅក្នុងបង្អួចដែលបើក បង្កើតអ្នកប្រើប្រាស់ម្តងមួយៗ។ យល់ស្រប នេះពិតជាយូរ និងធុញទ្រាន់ ជាពិសេសប្រសិនបើគណនីអ្នកប្រើប្រាស់ដែលត្រូវការមិនមាន 10 ប៉ុន្តែនិយាយថា 300, 500 ឬច្រើនជាងនេះ។ ជាពិសេស វានឹងក្លាយជាកិច្ចការធម្មតានៅពេលដែលអ្នកត្រូវការបំពេញមិនត្រឹមតែវាល "ចូល" និង "ពាក្យសម្ងាត់" ប៉ុណ្ណោះទេប៉ុន្តែថែមទាំងវាល "នាមត្រកូល" "នាមត្រកូល" "មុខតំណែង" "នាយកដ្ឋាន" "អង្គការ" ។ "មានទីតាំងនៅក្នុងផ្ទាំងផ្សេងៗ" ។ល។ ជាការពិតណាស់ អ្នកនឹងនិយាយថា គ្មាននរណាម្នាក់បានលុបចោលវិធីសាស្រ្ត "ចម្លងបិទភ្ជាប់" និង "ការវាយអក្សរពិការភ្នែក" នៅឡើយទេ ប៉ុន្តែសាកល្បងវា ហើយមានអារម្មណ៍ថាចំនួនអ្នកប្រើប្រាស់ដែលអ្នកធុញទ្រាន់ ហើយប្រសិនបើអ្នកមិនធុញទ្រាន់ទេនោះ រាប់ចំនួនកំហុសដែលបានធ្វើនៅពេលបញ្ចូលទិន្នន័យ។
ជាទូទៅ ដោយដឹងថាខ្ញុំត្រូវធ្វើអ្វីមួយអំពីរឿងនេះ ហើយចាប់តាំងពីខ្ញុំមានពេលកំណត់ ខ្ញុំបានងាកទៅរកធនធានអ៊ីនធឺណិត ដើម្បីស្វែងរកស្គ្រីបដែលគួរតែមាន និងដោះស្រាយបញ្ហានេះ ដូចដែលសភាវគតិរបស់ខ្ញុំបានប្រាប់ខ្ញុំ។ Alas ខ្ញុំស្ទើរតែខកចិត្តនឹងអ្វីដែលខ្ញុំបានឃើញ។ អ៊ីនធឺណែតពោរពេញដោយស្គ្រីបស្វ័យប្រវត្តិកម្មគ្រប់ប្រភេទ កិច្ចការផ្សេងៗនៅក្នុងបរិយាកាស AD ប៉ុន្តែអ្វីដែលខ្ញុំត្រូវការគឺបាត់ទាំងស្រុង។ ខ្ញុំ​ត្រូវ​ងាក​ទៅ​រក​ធនធាន​ជា​ភាសា​អង់គ្លេស ដែល​មួយ​ក្នុង​ចំណោម​នោះ (អាឡស់ ខ្ញុំ​បាន​បាត់​តំណ​គេហទំព័រ​រួច​ហើយ​នៅ​ពេល​សរសេរ​អត្ថបទ​នេះ ខ្ញុំ​មាន​គំនិត​រក​កន្លែង​ណា ហើយ​បើ​ខ្ញុំ​រក​ឃើញ ខ្ញុំ​នឹង​បោះពុម្ព​វា) មានស្គ្រីប "ត្រី" ជាក់លាក់មួយនៅលើ VBS ក្នុងទម្រង់ "ឆៅ" ដូចដែលវាបានប្រែក្លាយនៅពេលព្យាយាមអនុវត្តវា។ ប្រព័ន្ធសាកល្បងដែលមិននាំទៅរកអ្វីទាំងអស់ - វាគ្រាន់តែជាអាទិភាពមួយ មិនដំណើរការទេ ដោយសារតែវត្តមាននៃការខ្វះខាត និងកំហុសឆ្គងជាច្រើននៅក្នុងវា ដូចដែលខ្ញុំបានរកឃើញនៅពេលក្រោយ។ ខ្ញុំត្រូវជួសជុលវា បន្ថែមកូដ ហើយលើសពីនោះ ក្លាយជាអ្នកសរសេរកម្មវិធី VBS បន្តិច :)
ចំពោះបញ្ហានេះ ខ្ញុំសូមបង្ហាញដល់សាធារណជនជាទីគោរពនូវស្គ្រីបសម្រាប់បន្ថែមគណនីអ្នកប្រើប្រាស់នៅក្នុង AD ទៅ OUs ដែលបានបង្កើតជាមុន (កម្រិតទី 1)។ ប្រសិនបើសំណួរកើតឡើងថាហេតុអ្វីបានជា OUs មិនត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ នោះខ្ញុំនឹងឆ្លើយជាមុនថាខ្ញុំមិនបានរកឃើញពីរបៀបធ្វើវាទេ ហើយការគ្រប់គ្រងលើការផ្លាស់ប្តូរដែលបានធ្វើឡើងនៅក្នុង AD គឺមានភាពតឹងរ៉ឹងជាងមុន - អ្នកនៅតែមិនត្រូវលេងនៅក្នុងប្រអប់ខ្សាច់។ ប៉ុន្តែ​ធ្វើ​ការ​ផ្លាស់​ប្តូ​រ​ជាក់ស្តែង​ទៅ​ជា​ប្រព័ន្ធ​ដែល​មាន​អនុភាព​និង​ដំណើរការ​ក្នុង​ពេល​វេលា​ពិត​ប្រាកដ​ដែល​គេ​ហៅ​ថា "Active Directory"។

ចំណាំសំខាន់!
អ្នកត្រូវបង្កើតឯកសារជាមុនដែលមាន បំបែកដោយ ";" ប៉ារ៉ាម៉ែត្រដែលត្រូវការ៖
ចូល; ពាក្យសម្ងាត់; ឈ្មោះដំបូង Patronymic; នាមត្រកូល; ចំណងជើងការងារ; នាយកដ្ឋាន; អង្គការ;
តម្រូវឱ្យកំណត់ព្រំដែន ";" ។ ឧទាហរណ៍នៅលើបន្ទាត់នីមួយៗ៖
ស៊ីរិន-បក្សី ១; ពាក្យសម្ងាត់ 1; ឈ្មោះដំបូង Patronymic1; នាមត្រកូល 1; ទីតាំង 1; នាយកដ្ឋាន 1; អង្គការ 1;
sirin-bird2; ពាក្យសម្ងាត់ 2; ឈ្មោះដំបូង Patronymic2; នាមត្រកូល ២; មុខតំណែង 2; នាយកដ្ឋាន 2; អង្គការ 2;
sirin-bird4; ពាក្យសម្ងាត់ 3; នាមខ្លួន ២ ឈ្មោះកណ្ដាល ៣; នាមត្រកូល ៣; មុខតំណែង 3; នាយកដ្ឋាន 3; អង្គការ 3;
ស៊ីរិន-បក្សី ៣; ពាក្យសម្ងាត់ 4; ឈ្មោះដំបូង Patronymic4; នាមត្រកូល ៤; ទីតាំង 4; នាយកដ្ឋាន 4; អង្គការ 4;
ស៊ីរិន-បក្សី ៥; ពាក្យសម្ងាត់ 5; នាមខ្លួន ២ ឈ្មោះកណ្តាល ៥; នាមត្រកូល ៥; មុខតំណែង 5; នាយកដ្ឋាន 5; អង្គការ 5;
… … … … … … …
ការបង្កើតឯកសារបែបនេះក៏អាចត្រូវបានប្រគល់ឱ្យបុគ្គលិកដែលមិនមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់ដែលដឹងពីរបៀបប្រើកម្មវិធីនិពន្ធអត្ថបទមូលដ្ឋាន។ ហើយបន្ទាប់មកគ្រាន់តែពិនិត្យមើលភាពត្រឹមត្រូវនៃការវាយអក្សរ និងការដាក់សញ្ញាបំបែក ដូចដែលអ្នកបម្រើដ៏រាបទាបរបស់អ្នកបានធ្វើ។

រឿងមួយទៀត កំណត់ចំណាំសំខាន់!
ប៉ារ៉ាម៉ែត្រ "អង្គការ" គឺជា OU សម្រាប់អ្នកប្រើប្រាស់ដែលត្រូវគ្នា ហើយមិនត្រូវបានបង្កើតឡើងដោយស្គ្រីបនេះទេ ដូច្នេះដើម្បីឱ្យអ្វីៗដំណើរការបាន ដំបូងត្រូវបង្កើត OUs ដែលសមស្របនៅក្នុង root ដែន (នៅជិតថត "អ្នកប្រើប្រាស់" OU)។ នេះត្រូវបានពន្យល់ដោយការពិតដែលថានៅក្នុងដែនរបស់ខ្ញុំមានស្ថាប័នអតិថិជនជាច្រើនដែលមានអ្នកប្រើប្រាស់បុគ្គលិករបស់ពួកគេផ្ទាល់ ដូច្នេះផ្នែកនេះ។

ដូច្នេះស្គ្រីបខ្លួនឯង៖
កំណត់ objArgs = WScript.Arguments
ប្រសិនបើ objArgs.Count = 0 បន្ទាប់មក
WScript.Echo "បន្ថែមអ្នកប្រើប្រាស់ទៅដែន។"
WScript.Echo "add_to_ad.vbs [ឈ្មោះឯកសារ]"
WScript.Echo "[ឈ្មោះឯកសារ] - ឯកសារដែលមានបញ្ជីអ្នកប្រើប្រាស់"
WScript.Echo "ទម្រង់ឯកសារ៖ ចូល; ពាក្យសម្ងាត់; នាមខ្លួន - Patronymic; នាមត្រកូល; ទីតាំង; នាយកដ្ឋាន; អង្គការ;"
WScript. ចេញ
បញ្ចប់ប្រសិនបើ
ផ្លូវ = objArgs(0)

កំណត់ fso = CreateObject("Scripting.FileSystemObject")
កំណត់ objFile = fso.OpenTextFile(ផ្លូវ, 1)
ធ្វើរហូតដល់ objFile.AtEndOfStream
str = objFile.ReadLine
សម្រាប់ i = 1 ទៅ Len(str) ជំហានទី 1
strCh = ពាក់កណ្តាល(str, i, 1)
ប្រសិនបើ strCh = ";" បន្ទាប់មក
ជ្រើសរើសករណី Z
ករណី 0
UserName = strRez " *** ចូល
ករណីទី 1
UserPassword = strRez " *** ពាក្យសម្ងាត់
ករណីទី 2
FirstName = strRez " *** ឈ្មោះដំបូង - Patronymic
ករណីទី 3
LastName = strRez " *** នាមត្រកូល
ករណីទី 4
ចំណងជើង = strRez " *** ទីតាំង
ករណីទី 5
នាយកដ្ឋាន = strRez " *** នាយកដ្ឋាន
ករណីទី ៦
ក្រុមហ៊ុន = strRez " *** អង្គការ
"ករណីទី ៧
"អ្នកគ្រប់គ្រង = strRez" *** អ្នកគ្រប់គ្រង
"ករណីទី ៨
"OfficeRoom = strRez" *** បន្ទប់
បញ្ចប់ជ្រើសរើស
strRez = ""
strCh = ""
Z = Z + 1
ផ្សេងទៀត។
strRez = strRez + strCh
បញ្ចប់ប្រសិនបើ
បន្ទាប់
strRez = ""
strCh = ""
Z=0

កំណត់ objRoot = GetObject("LDAP://RootDSE")
កំណត់ objADSystemInfo = CreateObject("ADSystemInfo")
DomainDNSName = objADSystemInfo.DomainDNSName
DomainDN = objRoot.Get("DefaultNamingContext")
ContainerDN = "ou="&Company & "," & DomainDN

PName = UserName & "@" & DomainDNSName ""@snb.local"

"!!! សំខាន់!!!*** យើងបង្ហាញពីការបង្កើត OU ពីមុន ដែលអ្នកប្រើប្រាស់ថ្មីប្រញាប់ *******

កំណត់ objOU = GetObject("LDAP://" & ContainerDN)

"************************* បង្កើតគណនីអ្នកប្រើប្រាស់ដែន ****************** * ****
កំណត់ objUser = objOU.Create("អ្នកប្រើប្រាស់", "cn=" + ឈ្មោះអ្នកប្រើ)
" **** ចូល *****
objUser.Put "sAMAccountName", ឈ្មោះអ្នកប្រើប្រាស់
objUser.SetInfo

" ****** ពាក្យសម្ងាត់ *******
កំណត់ objUser = GetObject("LDAP://cn=" + UserName + "," + ContainerDN)
objUser.SetPassword UserPassword

" ******* UPN **********
objUser.Put "userPrincipalName", pName

"****** ការបិទគណនី *******
objUser.AccountDisabled = ពិត

" ******** ឈ្មោះ ***********
objUser.Put "givenName", FirstName

" ***** នាមត្រកូល ********
objUser.Put "sn", LastName

" ***** ឈ្មោះបង្ហាញ ******
objUser.Put "displayName", LastName & " " & FirstName

"ដំបូង
objUser.Put "initials", left(FirstName,1) & "." "& left(នាមត្រកូល, 1)

" ***** ចំណងជើងការងារ ******
objUser.Put "ចំណងជើង", ចំណងជើង

" ***** នាយកដ្ឋាន ******
objUser.Put "នាយកដ្ឋាន", Department

"អង្គការ
objUser.Put "ក្រុមហ៊ុន", ក្រុមហ៊ុន

" អ្នកគ្រប់គ្រង
"objUser.Put"manager", អ្នកគ្រប់គ្រង

"បន្ទប់
"objUser.Put "physicalDeliveryOfficeName", OfficeRoom

" ***** កំណត់ដើម្បីទាមទារឱ្យមានការផ្លាស់ប្ដូរពាក្យសម្ងាត់ នៅពេលដែលអ្នកចូលគណនីបន្ទាប់ ***
objUser.Put "pwdLastSet", CLng(0)

ObjUser.SetInfo

"WScript.Echo "អ្នកប្រើប្រាស់ -" + UserName + " បានបន្ថែមទៅ AD"

រង្វិលជុំ
WScript.Echo "អ្នកប្រើប្រាស់បានបន្ថែមទៅ AD"
objFile.Close

កូដបន្ថែមដើម្បីបញ្ចូលទៅក្នុងស្គ្រីប៖

" ថតផ្ទះ
"objUser.Put "HomeDirectory", strHomeDirPath

" ប្រអប់សំបុត្រ
"objUser.Put "mailNickname", strName

"ឧទាហរណ៍មួយចំនួនទៀត៖
"ObjUser.Put "ការពិពណ៌នា", "ឆ្នាំទី 2"
"objUser.Put "physicalDeliveryOfficeName", sOfficeName
"objUser.Put "ProfilePath", sScPath
"sHDrive objUser.Put "HomeDrive", "Z"
"objUser.Put "TerminalServicesProfilePath", sTermProf
"objUser.Put "TerminalServicesHomeDirectory", sTermHDir

លេខកូដពី កម្មវិធីនិពន្ធអត្ថបទចាំបាច់ត្រូវរក្សាទុកជាមួយផ្នែកបន្ថែម .vbs
ស្គ្រីបត្រូវបានបើកដំណើរការដោយឆ្លងកាត់ប៉ារ៉ាម៉ែត្រពីឯកសារមួយ។
ឧទាហរណ៍៖ script.vbs users.txt
, កន្លែងណា
script.vbs - ស្គ្រីបខ្លួនឯង
users.txt - ឯកសារដែលមានទិន្នន័យបញ្ចូល។

ការប្រតិបត្តិស្គ្រីបចំណាយពេលប៉ុន្មានវិនាទីជាមួយនឹងលទ្ធផលភ្លាមៗ។
ដូចដែលអ្នកអាចមើលឃើញពីកូដ ប្រសិនបើអ្នកមិនបញ្ចេញមតិពីរបីបន្ទាត់ទៀត ហើយធ្វើការបន្ថែមលើឯកសារជាមួយ ប៉ារ៉ាម៉ែត្របញ្ចូលបន្ទាប់មកអ្នកអាច "ដោយស្វ័យប្រវត្តិ" បញ្ចូលអ្នកគ្រប់គ្រង និងលេខបន្ទប់។ ស្គ្រីបអាចត្រូវបានអភិវឌ្ឍដោយគ្មានដែនកំណត់។ ឧទាហរណ៍ បន្ថែមសមត្ថភាពក្នុងការបញ្ចូលវាលដូចជា "ទូរស័ព្ទ" តាមរបៀបដូចគ្នា។
ក្នុងនាមជាអ្នកកែអត្ថបទសម្រាប់ Windows ខ្ញុំអាចណែនាំ Notepad ++ ឥតគិតថ្លៃ និងមានមុខងារច្រើន។
មួយនៃ តំណភ្ជាប់មានប្រយោជន៍ដែលជាកន្លែងដែលមានស្គ្រីបនៅក្នុង VBS ។

នៅក្នុងខ្លាំងណាស់ កំណែសាមញ្ញការបង្កើតគណនីអ្នកប្រើប្រាស់ថ្មីចំណាយពេលប្រហែលពីរបីនាទី។ បើក "Active Directory - Users and Computers" snap-in ចូលទៅកាន់អង្គភាពដែលចង់បាន (OU) ជ្រើសរើស New - User ពី menu បញ្ចូល username និង password។ នោះហើយជាវា គណនីរួចរាល់ អ្នកអាចធ្វើការបាន។
ឥឡូវ​ស្រមៃ​ថា​តាម​វិធី​នេះ អ្នក​ត្រូវ​បង្កើត​មិន​មែន​គណនី​មួយ​ទេ ប៉ុន្តែ​និយាយ​ថា 50 គណនី ហើយ​ធ្វើ​បែប​នេះ​ជា​ប្រចាំ។

ដោយសារវាមិនទំនងថានរណាម្នាក់ចូលចិត្តចំណាយពេលវាយបញ្ចូលទិន្នន័យអ្នកប្រើប្រាស់ដោយឆ្កួតៗនោះ យើងធ្វើការសន្និដ្ឋានសាមញ្ញមួយ ដំណើរការបង្កើតអ្នកប្រើប្រាស់គឺចាំបាច់ ស្វ័យប្រវត្តិ. ហើយ PowerShell នឹងជួយយើងក្នុងរឿងនេះ។

ដូច្នេះ សូមស្រមៃថា យើងត្រូវបង្កើតគណនីប្រភេទដូចគ្នាចំនួន 50 ជាបន្ទាន់។ ចូរយើងសរសេរស្គ្រីបខាងក្រោម៖


$username="សិស្ស"
$count=1..50
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -Path $org -passThru)

យើងដំណើរការស្គ្រីប ហើយអ្នកប្រើប្រាស់ 50 នាក់ដែលមានឈ្មោះ student1-student50 ត្រូវបានបង្កើតឡើងនៅក្នុងផ្នែកសិស្ស។ តាមលំនាំដើម គណនីត្រូវបានបង្កើតឡើងត្រូវបានបិទ ហើយអ្នកប្រើប្រាស់នឹងនៅតែត្រូវបានបង្ខំឱ្យទាក់ទងអ្នកដើម្បីធ្វើឱ្យពួកវាសកម្ម។ ចូរយើងព្យាយាមជៀសវាងបញ្ហានេះ៖


$username="សិស្ស"
$count=1..50
foreach ($i ក្នុង $count)

-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru)

នៅទីនេះយើងបង្កើត គណនីសកម្ម និងកំណត់រួចហើយ p@$$w0rdជាពាក្យសម្ងាត់លំនាំដើម ហើយក៏ចង្អុលបង្ហាញផងដែរដើម្បីផ្លាស់ប្តូរវានៅពេលដែលអ្នកចូលប្រព័ន្ធជាលើកដំបូង។ ដើម្បីជៀសវាងការបញ្ជូនពាក្យសម្ងាត់ទៅ ទម្រង់បើកចំហប្រើ cmdlet ConvertTo-SecureString, ដែលបកប្រែ ខ្សែអក្សរទៅជាទម្រង់សុវត្ថិភាព

ឥឡូវនេះ ចូរធ្វើឱ្យស្គ្រីបរបស់យើងមានភាពបត់បែនជាងមុនបន្តិច។ ដោយប្រើ cmdlet ម្ចាស់ផ្ទះអានចូរបង្កើតស្គ្រីបរបស់យើងស្នើសុំឈ្មោះ និងចំនួនអ្នកប្រើប្រាស់៖

$org=″OU=សិស្ស,DC=contoso,DC=com″


$count=1..$number
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -Path $org

គណនីត្រូវបានបង្កើត ហើយអ្នកប្រើប្រាស់អាចចូល និងធ្វើការបាន។ ឥឡូវនេះពួកគេត្រូវកំណត់រចនាសម្ព័ន្ធ - បន្ថែមទៅក្រុមសុវត្ថិភាពដែលបានចុះឈ្មោះ ថតផ្ទះស្គ្រីបចូល។ល។ អ្នកអាចធ្វើវាដោយប្រើគំរូ។ និយាយឱ្យសាមញ្ញ យើងបង្កើតគណនីគំរូមួយ ប្ដូរវាតាមបំណងទាំងស្រុង ហើយបន្ទាប់មកបង្កើតចំនួនច្បាប់ចម្លងដែលត្រូវការពីវាដោយប្រើប៉ារ៉ាម៉ែត្រ - ឧទាហរណ៍ :

$template = Get-AdUser -Identity ″សិស្ស”
$org=″OU=សិស្ស,DC=contoso,DC=com″
$username=Read-Host “បញ្ចូលឈ្មោះ”
$number=Read-Host “បញ្ចូលលេខ”

$count=1..$number
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
គំរូ $ -បានបើកដំណើរការ $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru)

វិធីមួយទៀតដើម្បីធ្វើស្វ័យប្រវត្តិកម្មការបង្កើតគណនីគឺនាំចូលពួកវាពីឯកសារ CSV ។ វិធីសាស្រ្តនេះគឺសមរម្យប្រសិនបើអ្នកត្រូវបានផ្តល់ឱ្យនូវបញ្ជីអ្នកប្រើប្រាស់ ហើយពួកគេត្រូវការបង្កើតគណនីស្របតាមបញ្ជីនេះ។ តាមក្បួនមួយ បញ្ជីស្រដៀងគ្នាត្រូវបានបង្កើតក្នុង Excel ក្នុងទម្រង់ជាតារាងដែលមានជួរឈរ ឈ្មោះ មុខតំណែង នាយកដ្ឋាន។ល។ ប្រហែលដូចនេះ៖

ភារកិច្ចរបស់យើងគឺរក្សាទុកវាជាទម្រង់ CSV ហើយបន្ទាប់មកបញ្ជាក់វានៅក្នុងស្គ្រីបដោយប្រើ cmdlet នាំចូល-CSV ។ប្រសិនបើឯកសារ CSV របស់អ្នកមានជួរឈរដែលត្រូវការទាំងអស់។ ថ្មី-ADUser នឹងភ្ជាប់ពួកវាដោយស្វ័យប្រវត្តិជាមួយនឹងគុណលក្ខណៈអ្នកប្រើប្រាស់ត្រឹមត្រូវ៖

$csv = នាំចូល-CSV -Path ″C:\scripts\users.csv″
$csv | New-AdUser -Path $org -បានបើកដំណើរការ $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru

វិធីនេះអ្នកអាចនាំចូលអ្នកប្រើប្រាស់ថ្មីរាប់រយនាក់ក្នុងរយៈពេលពីរបីវិនាទី ប៉ុន្តែមានកំហុសក្នុងវិធីសាស្ត្រនេះ៖

  • ឈ្មោះជួរឈរគួរ យ៉ាងពេញលេញផ្គូផ្គងឈ្មោះនៃគុណលក្ខណៈអ្នកប្រើប្រាស់ ឧទាហរណ៍ ឈ្មោះ អង្គការ ចំណងជើង បើមិនដូច្នេះទេ គ្មានអ្វីដំណើរការទេ។ បញ្ជីពេញលេញលក្ខណៈអាចត្រូវបានមើល។
  • នៅក្នុងតារាង ចាំបាច់អ្នកត្រូវតែបញ្ជាក់ SamAccountName បើមិនដូច្នេះទេ អ្នកនឹងទទួលបានកំហុសដែលបញ្ជាក់ថាគណនីមានរួចហើយ។
  • ប្រសិនបើគុណលក្ខណៈត្រូវបានកំណត់នៅក្នុងប្លង់រុស្ស៊ី ដូចក្នុងឧទាហរណ៍របស់យើង នោះបញ្ហាជាមួយនឹងការអ៊ិនកូដអាចកើតឡើង។ អ្វី​ដែល​បាន​ជួយ​ខ្ញុំ​ក្នុង​ការ​ដោះស្រាយ​បញ្ហា​នេះ​គឺ​ការ​ស្រង់​មាតិកា​នៃ​ឯកសារ CSV ដោយ​ប្រើ cmdlet ទទួលបានមាតិកាហើយរក្សាទុកវាទៅឯកសារ CSV ផ្សេងទៀត៖ Get-Content users.csv >> users1.csv.បន្ទាប់ពីនោះ គុណលក្ខណៈជាភាសារុស្សីទាំងអស់ចាប់ផ្តើមបង្ហាញជាធម្មតា។

ហើយចំណុចសំខាន់មួយទៀត៖ ដើម្បីដំណើរការ cmdlet ថ្មី-ADUserដំបូងអ្នកត្រូវតែនាំចូលម៉ូឌុល Active Directory សម្រាប់ PowerShell ។ នេះត្រូវបានធ្វើដោយក្រុមមួយ។ នាំចូល-ម៉ូឌុល ActiveDirectory,អ្នកគ្រាន់តែអាចបិទភ្ជាប់បន្ទាត់នេះទៅក្នុងស្គ្រីប . ករណីលើកលែងគឺនៅពេលដែលអ្នកដំណើរការស្គ្រីបពីការខ្ទាស់ពិសេស " ម៉ូឌុលសកម្មបញ្ជីឈ្មោះសម្រាប់ Windows PowerShell ។"

យើងបង្កើតគណនីដោយស្វ័យប្រវត្តិជាមួយ ដោយប្រើ PowerShell

ក្នុងទម្រង់សាមញ្ញបំផុត ការបង្កើតគណនីអ្នកប្រើប្រាស់ថ្មីត្រូវចំណាយពេលប្រហែលពីរបីនាទី។ បើក "Active Directory - Users and Computers" snap-in ចូលទៅកាន់អង្គភាពដែលចង់បាន (OU) ជ្រើសរើស New - User ពីម៉ឺនុយ បញ្ចូលឈ្មោះអ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់។ នោះហើយជាវា គណនីរួចរាល់ អ្នកអាចធ្វើការបាន។
ឥឡូវ​ស្រមៃ​ថា​តាម​វិធី​នេះ អ្នក​ត្រូវ​បង្កើត​មិន​មែន​គណនី​មួយ​ទេ ប៉ុន្តែ​និយាយ​ថា 50 គណនី ហើយ​ធ្វើ​បែប​នេះ​ជា​ប្រចាំ។

ដោយសារវាមិនទំនងថានរណាម្នាក់ចូលចិត្តចំណាយពេលវាយបញ្ចូលទិន្នន័យអ្នកប្រើប្រាស់ដោយឆោតល្ងង់ យើងធ្វើការសន្និដ្ឋានសាមញ្ញមួយ - ដំណើរការនៃការបង្កើតអ្នកប្រើប្រាស់ត្រូវតែ ស្វ័យប្រវត្តិ. ហើយ PowerShell នឹងជួយយើងក្នុងរឿងនេះ។

ដូច្នេះ សូមស្រមៃថា យើងត្រូវបង្កើតគណនីប្រភេទដូចគ្នាចំនួន 50 ជាបន្ទាន់។ ចូរយើងសរសេរស្គ្រីបខាងក្រោម៖


$username="សិស្ស"
$count=1..50
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -Path $org -passThru)

យើងដំណើរការស្គ្រីប ហើយអ្នកប្រើប្រាស់ 50 នាក់ដែលមានឈ្មោះ student1-student50 ត្រូវបានបង្កើតឡើងនៅក្នុងផ្នែកសិស្ស។ តាមលំនាំដើម គណនីត្រូវបានបង្កើតឡើងត្រូវបានបិទ ហើយអ្នកប្រើប្រាស់នឹងនៅតែត្រូវបានបង្ខំឱ្យទាក់ទងអ្នកដើម្បីធ្វើឱ្យពួកវាសកម្ម។ ចូរយើងព្យាយាមជៀសវាងបញ្ហានេះ៖

$org=″OU=សិស្ស,DC=contoso,DC=com″
$username="សិស្ស"
$count=1..50
foreach ($i ក្នុង $count)

-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru)

នៅទីនេះយើងបង្កើតគណនីដែលសកម្ម និងកំណត់រួចហើយ p@$$w0rdជាពាក្យសម្ងាត់លំនាំដើម ហើយក៏ចង្អុលបង្ហាញផងដែរដើម្បីផ្លាស់ប្តូរវានៅពេលដែលអ្នកចូលប្រព័ន្ធជាលើកដំបូង។ ដើម្បីជៀសវាងការបញ្ជូនពាក្យសម្ងាត់ជាអត្ថបទច្បាស់លាស់ យើងប្រើ cmdlet ConvertTo-SecureStringដែលបំប្លែងខ្សែអក្សរទៅជាទម្រង់ការពារ

ឥឡូវនេះ ចូរធ្វើឱ្យស្គ្រីបរបស់យើងមានភាពបត់បែនជាងមុនបន្តិច។ ដោយប្រើ cmdlet ម្ចាស់ផ្ទះអានចូរបង្កើតស្គ្រីបរបស់យើងស្នើសុំឈ្មោះ និងចំនួនអ្នកប្រើប្រាស់៖

$org=″OU=សិស្ស,DC=contoso,DC=com″


$count=1..$number
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -Path $org -Enabled $True -ChangePasswordAtLogon $true `

គណនីត្រូវបានបង្កើត ហើយអ្នកប្រើប្រាស់អាចចូល និងធ្វើការបាន។ ឥឡូវនេះពួកគេត្រូវកំណត់រចនាសម្ព័ន្ធ - បន្ថែមទៅក្រុមសុវត្ថិភាព ចុះឈ្មោះក្នុងថតផ្ទះ ស្គ្រីបចូល។ល។ អ្នកអាចធ្វើវាដោយប្រើគំរូ។ និយាយឱ្យសាមញ្ញ យើងបង្កើតគណនីគំរូ ប្ដូរវាតាមបំណងទាំងស្រុង ហើយបន្ទាប់មកបង្កើតចំនួនច្បាប់ចម្លងដែលត្រូវការពីវាដោយប្រើប៉ារ៉ាម៉ែត្រ - ឧទាហរណ៍ :

$template = Get-AdUser -Identity ″សិស្ស”

$username=Read-Host “បញ្ចូលឈ្មោះ”
$number=Read-Host “បញ្ចូលលេខ”

$count=1..$number
foreach ($i ក្នុង $count)
(New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$template -Enabled $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru)

វិធីមួយទៀតដើម្បីធ្វើស្វ័យប្រវត្តិកម្មការបង្កើតគណនីគឺនាំចូលពួកវាពីឯកសារ CSV ។ វិធីសាស្រ្តនេះគឺសមរម្យប្រសិនបើអ្នកត្រូវបានផ្តល់ឱ្យនូវបញ្ជីអ្នកប្រើប្រាស់ ហើយពួកគេត្រូវការបង្កើតគណនីស្របតាមបញ្ជីនេះ។ តាមក្បួនបញ្ជីបែបនេះត្រូវបានបង្កើតនៅក្នុង Excel ក្នុងទម្រង់ជាតារាងដែលមានជួរឈរ ឈ្មោះ មុខតំណែង នាយកដ្ឋាន។ល។ អ្វីមួយដូចនេះ៖

ភារកិច្ចរបស់យើងគឺរក្សាទុកវាជាទម្រង់ CSV ហើយបន្ទាប់មកបញ្ជាក់វានៅក្នុងស្គ្រីបដោយប្រើ cmdlet នាំចូល-CSV ។ប្រសិនបើឯកសារ CSV របស់អ្នកមានជួរឈរដែលត្រូវការទាំងអស់។ ថ្មី-ADUser នឹងភ្ជាប់ពួកវាដោយស្វ័យប្រវត្តិជាមួយនឹងគុណលក្ខណៈអ្នកប្រើប្រាស់ត្រឹមត្រូវ៖

$csv = នាំចូល-CSV -Path ″C:\scripts\users.csv″
$csv | New-AdUser -Path $org -បានបើក $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru

វិធីនេះអ្នកអាចនាំចូលអ្នកប្រើប្រាស់ថ្មីរាប់រយនាក់ក្នុងរយៈពេលពីរបីវិនាទី ប៉ុន្តែមានកំហុសក្នុងវិធីសាស្ត្រនេះ៖

  • ឈ្មោះជួរឈរគួរ យ៉ាងពេញលេញផ្គូផ្គងឈ្មោះនៃគុណលក្ខណៈអ្នកប្រើប្រាស់ ឧទាហរណ៍ ឈ្មោះ អង្គការ ចំណងជើង បើមិនដូច្នេះទេ គ្មានអ្វីដំណើរការទេ។ បញ្ជីពេញលេញនៃគុណលក្ខណៈអាចត្រូវបានមើល។
  • នៅក្នុងតារាង ចាំបាច់អ្នកត្រូវតែបញ្ជាក់ SamAccountName បើមិនដូច្នេះទេ អ្នកនឹងទទួលបានកំហុសដែលបញ្ជាក់ថាគណនីមានរួចហើយ។
  • ប្រសិនបើគុណលក្ខណៈត្រូវបានកំណត់នៅក្នុងប្លង់រុស្ស៊ី ដូចក្នុងឧទាហរណ៍របស់យើង នោះបញ្ហាជាមួយនឹងការអ៊ិនកូដអាចកើតឡើង។ អ្វី​ដែល​បាន​ជួយ​ខ្ញុំ​ក្នុង​ការ​ដោះស្រាយ​បញ្ហា​នេះ​គឺ​ការ​ស្រង់​មាតិកា​នៃ​ឯកសារ CSV ដោយ​ប្រើ cmdlet ទទួលបានមាតិកាហើយរក្សាទុកវាទៅឯកសារ CSV ផ្សេងទៀត៖ Get-Content users.csv >> users1.csv.បន្ទាប់ពីនោះ គុណលក្ខណៈជាភាសារុស្សីទាំងអស់ចាប់ផ្តើមបង្ហាញជាធម្មតា។

សរុបសេចក្តីមក ចំណុចសំខាន់ៗមួយចំនួន៖

ដើម្បីដំណើរការ cmdlet ថ្មី-ADUserដំបូងអ្នកត្រូវតែនាំចូលម៉ូឌុល Active Directory សម្រាប់ PowerShell ។ នេះត្រូវបានធ្វើដោយក្រុមមួយ។ នាំចូល-ម៉ូឌុល ActiveDirectory,អ្នកគ្រាន់តែអាចបិទភ្ជាប់បន្ទាត់នេះទៅក្នុងស្គ្រីប . ករណីលើកលែងគឺនៅពេលដែលអ្នកដំណើរការស្គ្រីបពីម៉ូឌុល Active Directory ពិសេសសម្រាប់ Windows PowerShell snap-in ។

ម៉ូឌុល ActiveDirectory មាននៅលើម៉ាស៊ីនមេក្រោម ការគ្រប់គ្រងវីនដូ Server 2008R2/2012 ក៏ដូចជាលើកម្មករ ស្ថានីយវីនដូ៧/៨ ស កញ្ចប់ដែលបានដំឡើងការគ្រប់គ្រង RSAT ។

ម៉ូឌុល ActiveDirectory ទាមទារ Active Directory Web Service (ADWS) ដែលផ្តល់ចំណុចប្រទាក់បណ្ដាញសម្រាប់ការចូលប្រើសេវាកម្មថត។ តាមលំនាំដើម សេវានេះត្រូវបានដំឡើងដោយស្វ័យប្រវត្តិ នៅពេលអ្នកបន្ថែមតួនាទីម៉ាស៊ីនមេ AD DS និង AD LDS នៅលើម៉ាស៊ីនមេដែលដំណើរការ Windows Server 2008R2 និងក្រោយ។ សម្រាប់ Windows Server 2003\2008 សេវាកម្មនេះអាចត្រូវបានដំឡើងដោយឡែកដោយការទាញយក

ស្គ្រីបឆ្លងកាត់ម៉ាស៊ីនមេទាំងអស់ពី Active Directory មើលសមាសភាព ក្រុមក្នុងស្រុក អ្នកគ្រប់គ្រងហើយរក្សាទុកបញ្ជីទៅក្នុងឯកសារ។ នឹងមានប្រយោជន៍សម្រាប់ការថែរក្សាសន្តិសុខនៅក្នុងបរិយាកាសជាមួយ មួយចំនួនធំម៉ាស៊ីនមេ។

ស្គ្រីបឧទាហរណ៍

ការពិពណ៌នាស្គ្រីប

1 - 4 យើងកំណត់អថេរសម្រាប់ការប្រើប្រាស់បន្ថែមទៀត។
1 ផ្លូវទៅកាន់ឯកសារដែលលទ្ធផលនឹងត្រូវបានរក្សាទុក។
2 កុងតឺន័រនៅក្នុង Active Directory ដែលមានគណនីកុំព្យូទ័រម៉ាស៊ីនមេ។
3 យើងក៏បង្កើតអារេ hash ផងដែរ។ នៅក្នុង Powershell នេះត្រូវធ្វើមុនពេលប្រើវា។
4 បង្កើតអថេរទទេ។ យើងនឹងបំពេញវាជាមួយនឹងបញ្ជីអ្នកប្រើប្រាស់ដែលជាសមាជិកនៃក្រុមអ្នកគ្រប់គ្រង។
6 - 21 មុខងារសម្រាប់ស្វែងរកអ្នកប្រើប្រាស់នៅក្នុងក្រុមអ្នកគ្រប់គ្រង។
7 ឈ្មោះម៉ាស៊ីនមេនឹងត្រូវបានបញ្ជូនទៅមុខងារ។ យើងនឹងរក្សាទុកវានៅក្នុងអថេរ $strcomputer
8 - 12 យើងបង្កើតករណីលើកលែងសម្រាប់ប្រតិបត្តិការដែលកំពុងត្រូវបានអនុវត្ត។ ប្រសិនបើសំណើមិនត្រូវបានបំពេញត្រឹមត្រូវ ឈ្មោះម៉ាស៊ីនមេនឹងត្រូវបានបង្ហាញនៅលើអេក្រង់។
9 យើងចូលប្រើវត្ថុ win32_groupuser ក្នុង WMI ជាមួយនឹងបញ្ជីក្រុមវីនដូ។
11 ប្រសិនបើការហៅទៅកាន់ WMI បរាជ័យ (ជាញឹកញាប់បំផុតដោយសារតែមិនមាន RPC) ឈ្មោះរបស់ម៉ាស៊ីនមេដែលអ្នកកំពុងចូលប្រើនឹងត្រូវបានបង្ហាញនៅលើអេក្រង់។ នៅពេលនេះបណ្តឹងឧទ្ធរណ៍កំពុងដំណើរការ។
13 លក្ខខណ្ឌដែលអត្ថិភាពនៃអថេរជាមួយនឹងបញ្ជីក្រុមដែលទទួលបានក្នុងជួរទី 9 ត្រូវបានពិនិត្យ
14 យើងបង្កើតអថេរដែលនឹងរួមបញ្ចូលបញ្ជីអ្នកប្រើប្រាស់នៃក្រុមអ្នកគ្រប់គ្រង ឬក្រុមអ្នកគ្រប់គ្រង (នៅលើម៉ាស៊ីនមេដែលមានកំណែជាភាសាអង់គ្លេស)។
15 - 18 យើងដកអ្នកប្រើប្រាស់ចេញពីក្រុមរដ្ឋបាល និងលុបព័ត៌មានសេវាកម្មដែលមិនចាំបាច់។
19 មុខងារនេះត្រឡប់បញ្ជីអ្នកប្រើប្រាស់។
23 យើងបង្កើតអថេរមួយ ហើយដាក់ក្នុងបញ្ជីកុំព្យូទ័រដែលយើងនឹងស្វែងរកអ្នកគ្រប់គ្រង។ IN ក្នុងឧទាហរណ៍នេះ។ទាំងនេះគឺជាកុំព្យូទ័រពី Active Directory។
24 - 29 យើងទាញយកម៉ាស៊ីនមេម្តងមួយៗ ដែលទទួលបានក្នុងជួរទី 23។
25 យើងដំណើរការមុខងារហើយបញ្ជូនវាទៅឈ្មោះម៉ាស៊ីនមេ។ លទ្ធផលនៃការងារត្រូវបានសរសេរទៅកាន់អថេរ $UserList
26 លក្ខខណ្ឌពិនិត្យរកមើលវត្តមាននៃតម្លៃនៅក្នុងអថេរ $UserList
27 ប្រសិនបើមានបញ្ជីអ្នកប្រើប្រាស់ សូមបន្ថែមវាទៅក្នុងអារេ $AdminList
31 - 35 យើងឆ្លងកាត់អារេ $AdminList ហើយបន្ថែមទៅក្នុងបញ្ជីម៉ាស៊ីនមេ និងអ្នកគ្រប់គ្រងសម្រាប់ពួកគេ។
32 យើងបង្កើតអថេរមួយដែលយើងសរសេរឈ្មោះម៉ាស៊ីនមេ។
33 យើងបង្កើតអថេរមួយដែលយើងនឹងដាក់បញ្ជីអ្នកប្រើប្រាស់សម្រាប់ម៉ាស៊ីនមេពីបន្ទាត់ 32 ។
34 អថេរ $ToCSV មានបន្ទាត់សម្រាប់ឯកសារនាពេលអនាគត។ បន្ទាត់នីមួយៗគឺជាឈ្មោះម៉ាស៊ីនមេ និងបញ្ជីអ្នកគ្រប់គ្រង បំបែកដោយសញ្ញាក្បៀស។
37 - 39 យើងពិនិត្យមើលវត្តមានរបស់ឯកសារនៅក្នុងប្រព័ន្ធដែលយើងចង់ដាក់លទ្ធផលនៃស្គ្រីប។ ប្រសិនបើឯកសារមាន សូមលុបវាចោល។
41 យើងបង្កើតឯកសារផ្ទុកឡើង ហើយដាក់បញ្ជីអ្នកគ្រប់គ្រងនៅក្នុងវា។