рд╡рдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдХрд┐рд╕реА рднреА рд╕рдВрдЧрдарди рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рджреМрд░рд╛рди, рдЕрд╕реНрдерд╛рдпреА рд╕рд╣рдпреЛрдЧреА рдкреИрджрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рджреЛрд╕реНрдд рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рджреЛрд╕реНрддреА рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрдИ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдИрдЯреА рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ, рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ, рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрдВрдЧрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ, рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╡реАрдкреАрдПрди рд╕реБрд░рдВрдЧреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЕрдиреНрдп "рдПрдХреАрдХреГрдд" рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЛрдореЗрди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ред

рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ "рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред" рдРрд╕рд╛ рдХреНрдпреЛрдВ? рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдкрддреЗ рдкрд░ рднреЗрдЬрд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдбрд╝рдХреА рдиреЗ рд╢рд╛рджреА рдХрд░ рд▓реА, рдЕрдкрдирд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдЕрдЪреНрдЫреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд┐рдЫрд▓реЗ рдИрдореЗрд▓ рдкрддреЗ рдХреЛ рдирд╣реАрдВ рдмрдЪрд╛ рдкрд╛рдПред рдХрднреА-рдХрднреА рдХрд░реНрдордЪрд╛рд░реА "рдИрдПрд╕!" рдХрд╣рдХрд░ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ, рдЯреЗрд▓реАрдлреЛрди рд░рд┐рд╕реАрд╡рд░ рдореЗрдВ, рди рдХрд┐ "рдПрдХ рдбреЙрд▓рд░ рдХреА рддрд░рд╣!", рдФрд░ рджреВрд╕рд░реА рддрд░рдл рдЙрдирдХреЗ рд╡рд╛рд░реНрддрд╛рдХрд╛рд░ рдХреЛ рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░ "рд╕реА" рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ .com рдХреЗ рдмрдЬрд╛рдп .com рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реЙрдЪ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреА рдЕрдВрддрд╣реАрди рдзрд╛рд░рд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдореВрд░реНрдЦрддрд╛рдУрдВ рдХреЛ рдХреМрд╢рд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рднреА рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреА рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рдкрддрд╛ рдкреБрд╕реНрддрд┐рдХрд╛ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

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



рднрд░реЛрд╕реЗрдордВрдж рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЪрдпрдирд╛рддреНрдордХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ , рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ), рдФрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирд┐рд░реНрдпрд╛рдд-рдЖрдпрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реЛрд░рдлрд╝реНрд░рдВрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрд┐рдлрд╛рдпрддреА рд▓реЛрдЧ рд╣реИрдВ рдФрд░ рдкреИрд╕реЗ рдирд╣реАрдВ рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рд╣реЙрдЯрд╡реАрд╡рд░ рд╕реЗ рдордЪреНрдЫрд░реЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдорд┐рд▓реЗрдВрдЧреЗ - PowerShell, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ADPowerShell рдХреЗ рд▓рд┐рдП рдЕрдбрд╝рдЪрди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, .NET рдХреНрд▓рд╛рд╕реЗрд╕ System.DirectoryServices.DirectoryEntry рдФрд░ System.DirectoryServices.DirectorySearcher рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреЗред

рддрдХрдиреАрдХ

рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд░рдгреА рдХреЛ рднрд░рддреЗ рд╣реБрдП, рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред PowerShell рдЖрдкрдХреЛ рдРрдб -рдореЗрдВрдмрд░ cmdlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реНрд▓рд╛рдИ рдкрд░ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреБрдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╛рдж рдореЗрдВ рдПрдХ рдФрд░ cmdlet, рд╡реНрд╣реЗрдпрд░-рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рд╣рдо рдЙрди рд╕рднреА рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рднреА рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдмрд╛рд╣рд░реА рд╕рдВрдкрд░реНрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреАрди рдРрд░реЗ рд╣реЛрдЧрд╛: рдирдП рд╕рдВрдкрд░реНрдХ, рд╕рдВрдкрд░реНрдХ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕реЗ рд╕рдВрдкрд░реНрдХ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рдЧреБрдгрдзрд░реНрдо рдмрджрд▓ рдЧрдП рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рд╕рднреА рд╕рдВрдкрд░реНрдХ рдирдП рдкрд╛рдП рдЬрд╛рдПрдВрдЧреЗред
рд╣рдордиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЙрдирдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ "рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдПрдВ, рдлрд┐рд░ рд╕реЗ рднрд░реЗрдВ" рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВ рдЬреЛ рдмрджрд▓ рдЧрдП рд╣реИрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ? рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реНрд╡рдпрдВ рдПрдХ рдирд╛рдЬреБрдХ рдЪреАрдЬ рд╣реИ рдФрд░ рдкрддрд╛ рдкреБрд╕реНрддрд┐рдХрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЬрдм RID рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреИрдЪ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдШреГрдгрд┐рдд рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ GUID рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рддрдм рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВрдЧреЗ, рдЗрд╕реЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдХреЛрдИ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ , рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ "рд╕рдВрдкрд░реНрдХ" рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реНрдиреИрдк-рдЗрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЖрдЙрдЯрд▓реБрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб / рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдИрдореЗрд▓ рднреЗрдЬрддрд╛ / рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдПрдХ рд╕рдВрдЧрдарди рджреВрд╕рд░реЗ рд╕рдВрдЧрдарди рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЕрдиреНрдп рдЯреЗрд▓рд▓рдлрд╝реЛрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрд╕реНрддрд░реАрдп рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдмрдВрдз рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕реА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдирд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред
рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред "рд╕рдВрдкрд░реНрдХ" рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рд╕рдВрд╢реЛрдзрди, рд╡рд┐рд▓реЛрдкрди рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд╛рддреЗ рдореЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдорд╢реАрди рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреЛ рд╕реМрдВрдкрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрдВрднреАрд░ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рдЕрдм рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

#      #   #      function Write-LogFile([string]$logFileName) { Process { $_ $dt = Get-Date $str = $dt.DateTime + " " + $_ $str | Out-File -FilePath $logFileName -Append } } #  ,     #  ArrayList,      # ,  ,     function Compare-ArrayLists([System.Collections.ArrayList] $ListA, [System.Collections.ArrayList] $ListB) { if ($ListA.Count -ne $ListB.Count) { return $false } else { $CompListA = New-Object System.Collections.ArrayList($null) $CompListB = New-Object System.Collections.ArrayList($null) for ($i=0;$i -lt $ListA.Count;$i++) { if ($ListA[$i].GetType() -ne [String]) { $rc = $CompListA.Add([System.BitConverter]::ToString($ListA[$i])) } else { $rc = $CompListA.Add($ListA[$i]) } if ($ListB[$i].GetType() -ne [String]) { $rc = $CompListB.Add([System.BitConverter]::ToString($ListB[$i])) } else { $rc = $CompListB.Add($ListB[$i]) } } for ($i=0;$i -lt $CompListA.Count;$i++) { if ($CompListB.IndexOf($CompListA[$i]) -lt 0) {return $false} } return $true } } #      ,   (),   (). : #   #   # , ,    Exchange #     # ,   :    function Load-FromDomain([string] $DomainName, [string] $UnitName, [bool]$flagExchangeDomain, [ref]$A_Entries, [bool]$flagContacts) { if (!$flagContacts) { if (!$flagExchangeDomain) { #   LDAP,     ,    #    .   !userAccountControl:1.2.840.113556.1.4.803:=2, #   ,        # ,      (,        AD ) $strFilter = "(&(objectClass=user)(!objectClass=computer)(mail=*)(company=*))"#(!userAccountControl:1.2.840.113556.1.4.803:=2) } else { #  Exchange-   msExchHideFromAddressLists,      $strFilter = "(&(objectClass=user)(!objectClass=computer)(mail=*)(company=*)(!msExchHideFromAddressLists=TRUE))" #(!userAccountControl:1.2.840.113556.1.4.803:=2) } } else { $strFilter = "(&(objectClass=contact))" } $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://"+$DomainName+"/"+$UnitName) $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = $strFilter $objSearcher.SearchScope = "Subtree" #   ,   ,   , #    -    . $colProplist = "employeeID", "employeeType", "objectGUID", "CN", "givenName", "name", "sn", "legacyExchangeDN", "displayName", "mail", "wWWHomePage", "l", "postalCode", "initials", "physicalDeliveryOfficeName", "st", "streetAddress", "ipPhone", "title", "mobile", "department", "pager", "homePhone", "facsimileTelephoneNumber", "userAccountControl", "distinguishedName", "company", "Description", "otherTelephone", "telephoneNumber", "userCertificate" if ($flagExchangeDomain) { $colProplist += "mailNickname" $colProplist += "msExchHideFromAddressLists" } if ($flagContacts) { $colProplist += "info" } foreach ($i in $colPropList) { $rc = $objSearcher.PropertiesToLoad.Add($i) } $colResults = $objSearcher.FindAll() $colResults.Count foreach ($objResult in $colResults) { $objItem = $objResult.Properties #    ,     ,  ,    #   ,      . $Entry = New-Object -TypeName System.Object if (!$flagContacts) { $Entry | Add-Member -type NoteProperty -name "GUID" -Value ([System.BitConverter]::ToString($objItem.objectguid[0])).Replace('-','') } else { $Entry | Add-Member -type NoteProperty -name "GUID" -Value ([string]$objItem.info) } #    ,      , ..   . #  , ,  - ,      , #       ,         $UserProperties = $colProplist | Where-Object {($_ -ne "objectGUID") -and ($_ -ne "userCertificate") -and ($_ -ne "otherTelephone")} foreach ($UserProperty in $UserProperties) { if ($objItem.Item($UserProperty) -ne $null) { $Entry | Add-Member -type NoteProperty -name $UserProperty -Value ([string]$objItem.Item($UserProperty)) } } #   ,        if ($objItem.usercertificate -ne $null) { $Certificates = New-Object System.Collections.ArrayList($null) foreach ($Certificate in $objItem.usercertificate) { $rc = $Certificates.Add($Certificate) } $Entry | Add-Member -type NoteProperty -name "userCertificate" -Value ($Certificates) } if ($objItem.othertelephone -ne $null) { $Telephones = New-Object System.Collections.ArrayList($null) foreach ($Telephone in $objItem.othertelephone) { $rc = $Telephones.Add($Telephone) } $Entry | Add-Member -type NoteProperty -name "otherTelephone" -Value ($Telephones) } $A_Entries.Value += $Entry } } #  ,    . #            ,  : #    #    #    #    #    $A_Users = $A_Contacts = $A_NewContacts = $A_ChangedContacts = $A_ContactsToDelete = @() $LogFileName = "./GetUserContacts.log" $flagExchangeOrganization = $false #         #      : # ("< >","<>") ("< >","<  >","< exchange>") ("< 1>","< >","< Exchange>") ("< 2>"... #  # ("admin@litware.inc","password") ("litware.inc","ou=contacts,dc=litware,dc=inc",$true) ("contoso.com","dc=contoso,dc=com",$false) if ($args.Count -lt 3) { break } $UserName = $args[0][0] $Password = $args[0][1] $UserName | Write-LogFile $LogFileName $Password | Write-LogFile $LogFileName $Domain = $args[1][0] $ContactsOU = $args[1][1] $flagExchangeOrganization = $args[1][2] $Domain | Write-LogFile $LogFileName $ContactsOU | Write-LogFile $LogFileName $flagExchangeOrganization | Write-LogFile $LogFileName Load-FromDomain $Domain $ContactsOU $flagExchangeOrganization ([ref]$A_Contacts) $true for ($i=2;$i -lt $args.Count;$i++) { $SrcDomain = $args[$i][0] $SrcOU = $args[$i][1] $SrcExchangeFlag = $args[$i][2] $SrcDomain | Write-LogFile $LogFileName $SrcOU | Write-LogFile $LogFileName $SrcExchangeFlag | Write-LogFile $LogFileName Load-FromDomain $SrcDomain $SrcOU $SrcExchangeFlag ([ref]$A_Users) $false } #   ,    , #    ,     , #   .   ,    #  - ,       #      . foreach ($User in $A_Users) { $Contact = $A_Contacts | Where-Object {$_.GUID -eq $User.GUID} if ($Contact -eq $null) { $A_NewContacts += $User $A_NewContacts[$A_NewContacts.Length-1].distinguishedName = "" } else { $flagContactAdded = $false $UserProperties = ($User | Get-member -MemberType NoteProperty | Where-Object {($_.Name -ne "distinguishedName") -and ($_.Name -ne "mailNickname")}) foreach ($UserProperty in $UserProperties) { if ($Contact.($UserProperty.Name) -ne $null) { if ($User.($UserProperty.Name).GetType() -ne [System.Collections.ArrayList]) { if ($User.($UserProperty.Name) -ne $Contact.($UserProperty.Name)) { if (!$flagContactAdded) { $NewEntry = New-Object -TypeName System.Object $NewEntry | Add-Member -type NoteProperty -name "distinguishedName" -Value ($Contact.distinguishedname) $flagContactAdded = $true } $NewEntry | Add-Member -type NoteProperty -name ($UserProperty.Name) -Value $User.($UserProperty.Name) } } else { if (!(Compare-ArrayLists $User.($UserProperty.Name) $Contact.($UserProperty.Name))) { if (!$flagContactAdded) { $NewEntry = New-Object -TypeName System.Object $NewEntry | Add-Member -type NoteProperty -name "distinguishedName" -Value ($Contact.distinguishedname) $flagContactAdded = $true } $NewEntry | Add-Member -type NoteProperty -name ($UserProperty.Name) -Value $User.($UserProperty.Name) } } } } if ($flagContactAdded) { $A_ChangedContacts += $NewEntry } } } #    ,       foreach ($Contact in $A_Contacts) { $User = $A_Users | Where-Object {$_.GUID -eq $Contact.GUID} if ($User -eq $null) { $A_ContactsToDelete += $Contact } } # $A_NewContacts # $A_ChangedContacts # $A_ContactsToDelete #   foreach ($Contact in $A_ContactsToDelete) { $ContactsOUDN = "LDAP://" + $Domain + "/" + $ContactsOU $objContactsOU = new-object System.DirectoryServices.DirectoryEntry($ContactsOUDN, $Username, $Password, [System.DirectoryServices.AuthenticationTypes]::Secure) $objContactsOU.Delete("contact", $Contact.distinguishedName.Split(",")[0]) "" + $Contact.name | Write-LogFile $LogFileName } #   foreach ($Contact in $A_NewContacts) { $ContactsOUDN = "LDAP://" + $Domain + "/" + $ContactsOU $objContactsOU = new-object System.DirectoryServices.DirectoryEntry($ContactsOUDN, $Username, $Password, [System.DirectoryServices.AuthenticationTypes]::Secure) $NewContact = $objContactsOU.Children.Add("CN="+$Contact.CN,"contact") $NewContactProperties = ($Contact | Get-member -MemberType NoteProperty | Where-Object {($_.Name -ne "distinguishedName") ` -and ($_.Name -ne "GUID") -and ($_.Name -ne "CN") -and ($_.Name -ne "otherTelephone")` -and ($_.Name -ne "name") -and ($_.Name -ne "userAccountControl") -and ($_.Name -ne "userCertificate")}) if ($NewContactProperties -ne $null) { foreach ($NewContactProperty in $NewContactProperties) { $NewContact.Put($NewContactProperty.Name,$Contact.($NewContactProperty.Name)) } } if ($Contact.mail -ne $null) { if ($flagExchangeOrganization) { $NewContact.Put("targetAddress", "SMTP:" + $Contact.mail) $NewContact.Put("mailNickname", $Contact.mail.Split("@")[0]) $NewContact.Put("msExchPoliciesExcluded", "{26491CFC-9E50-4857-861B-0CB8DF22B5D7}") } $NewContact.Put("proxyAddresses", "SMTP:" + $Contact.mail) } if ($Contact.userCertificate -ne $null) { $NewContact.PutEx(2, "userCertificate", [Array]$Contact.userCertificate) } if ($Contact.otherTelephone -ne $null) { $NewContact.PutEx(2, "otherTelephone", [Array]$Contact.otherTelephone) } $NewContact.Put("info",$Contact.GUID) $NewContact.SetInfo() " " + $Contact.name | Write-LogFile $LogFileName } # , ,  ,  . #        ,    #    .   ,     CN (canonical name) #  ,        Rename() foreach ($Contact in $A_ChangedContacts) { $ContactDN = "LDAP://" + $Domain + "/" + $Contact.distinguishedName $ChangedContact = new-object System.DirectoryServices.DirectoryEntry($ContactDN, $Username, $Password, [System.DirectoryServices.AuthenticationTypes]::Secure) $ChangedContactProperties = ($Contact | Get-member -MemberType NoteProperty | Where-Object {($_.Name -ne "distinguishedName") ` -and ($_.Name -ne "GUID") -and ($_.Name -ne "CN") -and ($_.Name -ne "otherTelephone") ` -and ($_.Name -ne "name") -and ($_.Name -ne "userAccountControl") -and ($_.Name -ne "userCertificate")}) if ($ChangedContactProperties -ne $null) { foreach ($ChangedContactProperty in $ChangedContactProperties) { $ChangedContact.Put($ChangedContactProperty.Name,$Contact.($ChangedContactProperty.Name)) "  " + $ChangedContactProperty.Name + "  " + $Contact.distinguishedName | Write-LogFile $LogFileName } } if ($Contact.userCertificate -ne $null) { $ChangedContact.PutEx(1, "userCertificate", 0) $ChangedContact.PutEx(2, "userCertificate", [Array]$Contact.userCertificate) "  userCertificate  " + $Contact.distinguishedName | Write-LogFile $LogFileName } if ($Contact.otherTelephone -ne $null) { $ChangedContact.PutEx(1, "otherTelephone", 0) $ChangedContact.PutEx(2, "otherTelephone", [Array]$Contact.otherTelephone) "  otherTelephone  " + $Contact.distinguishedName | Write-LogFile $LogFileName } if ($Contact.CN -ne $null) { " " + $ChangedContact.distinguishedName + "   " + $Contact.CN | Write-LogFile $LogFileName $ChangedContact.Rename("CN="+$Contact.CN) } $ChangedContact.SetInfo() } 


рдлрд┐рд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдФрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles