Windows Server 2008 рдиреЗ рдкрд╣рд▓реЗ
ActiveDirectory рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп
PowerShell cmdlets рдХреА рд╢реБрд░реБрдЖрдд рдХреАред рдЗрди рд╕реБрдВрджрд░, рддрд╛рд░реНрдХрд┐рдХ, рд╕рд╣рдЬ рдФрд░ рдЕрддреНрдпрдВрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрдиреЛрдВ рдиреЗ рдореБрдЭреЗ рджреБрдЦреА рдХрд░ рджрд┐рдпрд╛, рдЕрдЧрд░ "рдХрд╖реНрдЯрдкреНрд░рдж" рдирд╣реАрдВ рдХрд╣рдирд╛ рд╣реИ: рд╡реЗ рдореЗрд░реЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо рдереЗ, рдЧреИрд░-рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ enekeyschikред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЧреНрдпрд╛рд░рд╣ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдВрдбреЛрдЬ 2003 R2 рдкрд░ рдмрдирд╛рдП рдЧрдП рдереЗред
рдЧреНрдпрд╛рд░рд╣ рд╕реБрджреВрд░ рдкреВрд░реНрд╡ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╡рд┐рднрд┐рдиреНрди рд╢рд╣рд░реЛрдВ рдореЗрдВ рдЧреНрдпрд╛рд░рд╣ рдЕрд╕рдВрдмрджреНрдз рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЧреНрдпрд╛рд░рд╣ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдбреЛрдореЗрдиред рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдпрд╣ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ "рд╕реЗрд╡реЗрдВрд╕", рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рд╡реНрд╣рд┐рд╕" рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ
рджреЛ рд╣рдЬрд╛рд░ рдФрд░ рддреАрди рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ AD cmdlets рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - "рдХреЛрдб рдмрдирд╛рдПрдБ рдЬреЛ Windows XP / 2003 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмреБрдирд┐рдпрд╛рджреА AD рдкреНрд░рдмрдВрдзрди рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред" рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ, рд╣реИрдмреНрд░реИрдЯ рдХреЗ рддрд╣рдд рдкрдврд╝реЗрдВ (
рдзреНрдпрд╛рди рд╕реЗ, рдмреИрд╕рд╛рдЦреА; рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд╛рда рдФрд░ рдХреЛрдб )ред
рдкреНрд░рд╕рдВрдЧ
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕реБрд╕реНрдд, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдФрд░ рдЕрдиреНрдп рдЖрдИрдЯреА рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЕрд╡рдзрд┐ рддрдХ рдПрдирд╛рдЗрдХрд╛рдЗрд╕рд┐рдХ рдХрд╛ рдХрд╛рдо рдХреБрдЫ рдЬрдЯрд┐рд▓ рдерд╛: рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдУрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдФрд░ рдЕрдиреНрдп рдЖрдИрдЯреА рдЙрджреНрдпрдореЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, enikeyshchikov рдХреЗ рд╣рд╛рдереЛрдВ рд╕реЗ, рдЯреА.рдХреЗ. рдЙрдирдХреЗ рдкрд╛рд╕
Altiris рдпрд╛
MS SCCM рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдереЗред
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реМрдВрдкреЗ рдЧрдП рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЙрдирдХреЗ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдХрд╛рд░реНрдп рд╕рдордп рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдбреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореБрдЭреЗ рддрдм рд▓рдЧрд╛, рдЬрдм рдПрдХреНрдЯрд┐рд╡ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛрдордВрдбрд▓реЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА (рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЦрд░реАрджрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛)ред
рд╡реНрдпрд╛рдкрд╛рд░ рдЬрдЧрдд рдХреЗ рдиреЗрддрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдиреБрднрд╡рд╣реАрди рдереЗ: тАЬрдпрджрд┐ рдкреБрд░рд╛рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЖрд╣, рдпрд╣ рдорд╣рд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдЕрджреНрднреБрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ! рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдЗрддрдирд╛ рднреБрдЧрддрд╛рди рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣рд╛рдВ, рд╡реИрд╕реЗ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрд╕реЗ рд╕реЗ рдЦрд░реАрджреЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рд╡рд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рдХрдВрдкрдиреА рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ! тАЭ
"рдареАрдХ рд╣реИ," рдореИрдВрдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛: "рдореИрдВ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЧрдпрд╛" рдмрд╣реБрдд рдмрд╣реБрддред рдЕрдВрдд рдореЗрдВ, рдкреНрд░рдмрдВрдзрди рдХреЗ "рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдирд╛рдЗрдХрд╕рд┐рдХреНрдХ рдФрд░ рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рдмреАрдЪ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ "рд╕рд░рд▓рддрд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛" рдФрд░ "рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛" рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред PowerShell рдХреЛ "ersatz-рдкреНрд░рдмрдВрдзрди
AD " рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ (рдореБрдЦреНрдпрддрдГ
.NET рдФрд░
COM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП)ред
рдХреЛрдб
рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЗрдХрд╛рдИ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдпрджрд┐ рдЖрдкрдиреЗ ActiveDirectory рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдПрдХ рдЕрд▓рдЧ
LDAP рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ (рд╡рд┐рд╢рд┐рд╖реНрдЯ) рдирд╛рдо рд╣реИрдВ - DNs (
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо )ред
рд╡рд┐рд╢рд┐рд╖реНрдЯ LDAP рдирд╛рдо рдореЗрдВ рдХрдИ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ - RDNs (
рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо ), рдЬреЛ "рдЧреБрдг = рдорд╛рди" рдЬреЛрдбрд╝реЗ рд╣реИрдВред
рд╕рдВрдЧрдарди рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
ou=Managers
рдПрдХ рд╣реА рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
ou=Managers,DC=example,dc=com
рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ "example.com" рдирд╛рдо рдХреЗ AD рдбреЛрдореЗрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдкрд░ рдПрдХ "рдкреНрд░рдмрдВрдзрдХ" рдЗрдХрд╛рдИ рд╣реИред
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрджреНрд╡рд┐рддреАрдп LDAP рдирд╛рдо рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд▓рдЧрд╛, рдЬреЛ рдлрд╝реЙрд░реНрдо рдХрд╛ рд╕рд╣рдЬ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ "рдЙрджрд╛рд╣рд░рдг.com/Managers/Accounting/" рдХреЛ DN рдЕрдВрдХрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:
<# .SYNOPSIS OU , Distinguished Name. .Description , . : DNS-, NEIBIOS (.. example.com, EXAMPLE) .PARAMETER Path , DN .OUTPUTS System.String. Distinguished Name, . #> Function Convert-ADPath2DN([STRING]$Path) { $Res = $ResOU = $null # OU OU DN $P = Join-Path $Path $P = $P.Replace(,) #, - if ($P -match ) { $i = 0 $DNS_DOMAIN_NAME = $Matches.DNS_DOMAIN_NAME # OU While (-not ($P -eq $DNS_DOMAIN_NAME)) { $i++ $OU = Split-Path -Leaf $P $P = Split-Path -Parent $P If ($i -ne 1) { $ResOU = $ResOU + } $ResOU = $ResOU+ } } else { $DNS_DOMAIN_NAME = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name } # , $DNS_DOMAIN_NAME = $DNS_DOMAIN_NAME.Replace(,) $DC_NAMES = @() While ($DNS_DOMAIN_NAME -ne ) { $DC = Split-Path -Leaf $DNS_DOMAIN_NAME $DNS_DOMAIN_NAME = Split-Path -parent $DNS_DOMAIN_NAME $DC_NAMES = $DC_NAMES + $DC } $Count = $DC_NAMES.Count for ($i=$Count;$i -gt 0;$i--) { $DC = $DC_NAMES[$i - 1] If ($i -ne $Count) { $ResDC = $ResDC + } $ResDC = $ResDC+ if ($ResOU -ne $null) { $Res = $ResOU + + $ResDC } else { $Res = $ResDC } } Return $Res }
рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
$Var = Convert-ADPath2DN -Path "example.com/Test/" $Var OU=Test,DC=example,DC=com
рдпрджреНрдпрдкрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реАрдзреЗ ActiveDirectory рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдЧрдарди рдЗрдХрд╛рдИ рд╕рдВрдЧрдарди
рдкреНрд░рддреНрдпреЗрдХ enikeyschik рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрджреНрдпрдо рдХреЗ рдореБрдЦреНрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдбреЛрдореЗрди рдкрд░ ActiveDirectory рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрдИрдЯреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрдиреА рдХреА рдиреАрддрд┐ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЧреИрд░-рдкреНрд░рдореБрдЦ рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рдкреАрд╕реА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ 2003 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдирд╛рдЗрдХреЗрд╢рд┐рдХ, рдЙрд╕рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдирд╛рдпрдХ, рд╡рд░рд┐рд╖реНрда рдХрд╛рдорд░реЗрдбреЛрдВ рдХреЗ рд╕рдЦреНрдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХрд╛ рд╕реАрдзреЗ "рдореБрдХрд╛рдмрд▓рд╛" рдИрд╕реНрд╡реА рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рджреЛрд╖реА рдирд╣реАрдВ рдард╣рд░рд╛рдПрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЙрд╕реЗ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рдЕрд▓рдЧ
рд╕рдВрдЧрдарди рдЗрдХрд╛рдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рдкрдЯрдХрдерд╛ рд▓реЗрдЦрди рдХреМрд╢рд▓ рдХрд╛ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╣реЛрдЧрд╛ред рдЦреИрд░, рдФрд░ рдЪреВрдВрдХрд┐ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рд╖рдп рдкреЙрд╡рд░реНрд╕рд╣реЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ
System.DirectoryServices.DirectoryEntry рд╡рд░реНрдЧ рдХреЗ
рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
<# .SYNOPSIS AD . .Description , . - . New-ADOrganizationUnit .PARAMETER Path AD, OU (.. ). .PARAMETER Name (Organization Unit). .OUTPUTS $null. . #> Function New-ADOrganizationUnit_simple([STRING]$Path,[STRING]$Name) { # , .. . # - OU, . $ErrorActionPreference = "SilentlyContinue" # DN (. ) $OUDN = Convert-ADPath2DN -Path $Path # ADsPath $OUDN = "LDAP://$OUDN" # , $objDomain = [ADSI]$OUDN # $objOU = $objDomain.Create("organizationalUnit", "ou=$Name") $objOU.SetInfo() # Trap { # , , . if ($_.Exception.ErrorCode -eq $SYSTEM_ERROR_CODE_OU_ALREADY_EXISTS) { Write-Host "OU $Name $Path " } } }
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рджреЛрд╖ рдкреВрд░реНрдг рд╢рд╛рдЦрд╛ рд╢рд╛рдЦрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдХреНрд╖рдорддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдбреЛрдореЗрди рдореЗрдВ OU "
example.com/Users/HR/Women " рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реИ "
example.com/Users ", рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрддреНрдпрдВрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ тАЬрдпреВрдЬрд░реНрд╕тАЭ, рдлрд┐рд░ тАЬрдПрдЪрдЖрд░тАЭ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ тАЬрдорд╣рд┐рд▓рд╛тАЭ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдпрдорд┐рдд рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЦрдВрдбрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рдЬреЛ рдкреВрд░реА рд╢рд╛рдЦрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:
<# .SYNOPSIS AD . .Description , ( ). .PARAMETER Path . .OUTPUTS $null. . #> Function New-ADOrganizationUnit ([STRING]$Path) { #, (example.com/Unit1/Unit2...) If ($Path -match ) { $i = 0 # , $Pth = Join-Path $Path $Pth = $Pth.Replace(,) $OUs = @() # OU While ($Pth -ne ) { $i++ $Pos = $Pth.IndexOf() If ($i -eq 1) { $DNS_DOMAIN_NAME = $Pth.Substring(0,$Pos) } else { $OU = $Pth.Substring(0,$Pos) $OUs = $OUs + $OU } $Pth = $Pth.Substring($Pos+1,($Pth.Length - $Pos -1)) } # OU $Pth = $DNS_DOMAIN_NAME For ($i=0;$i -lt $OUs.Count;$i++) { $OU = $OUs[$i] # OU. # , # - . New-ADOrganizationUnit_simple -Name $OU -Path $Pth $Pth = $Pth + + $OU } } }
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ:
# "Test" "MyFirstOU" example.com New-ADOrganizationUnit -Path "example.com/Test/MyFirstOU/" | Out-Null
рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣ рдЬреЛрдбрд╝рдирд╛
рдЕрдиреБрднрд╡реА рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ, рдЧрдВрднреАрд░ рдкреБрд╕реНрддрдХреЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ Padawans рдХрд┐рд╕реА рднреА AD рдкреНрд░рд╢рд╛рд╕рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдПрдХрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рдХреЗ
рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрдм рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрджрд┐, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рддреЛ Padawans рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рднрд╛рдЧреАрджрд╛рд░реА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ)ред
рддрд░реНрдХ рдЖрдорддреМрд░ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣реИ: рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреБрдЫ рд╕рдореВрд╣ рдиреАрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ (рдпрд╛ рдЙрд╕рдХреЗ рдЦрд╛рддреЗ рдХреЛ) рдордирдорд╛рдирд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЬрдм рдХрд┐рд╕реА рдФрд░ рдХреЛ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рдХрджрдо рдЙрдард╛рдиреЗ рд╣реЛрдВрдЧреЗред рджреВрд╕рд░реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрдХрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "
gAllowRunAnything " рдФрд░ рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдордирдорд╛рдиреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА: рдпрд╣ рдЗрд╕ рд╕рдореВрд╣ рдореЗрдВ рджреВрд╕рд░реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдЦрд╛рддреЗ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк enikeyschik рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ (рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдЬреЛрдбрд╝рддреЛрдбрд╝реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА (рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ enikeyshiker рдиреЗ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ)ред
рд╣рдо рд╕рдореВрд╣реЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░рд┐рд╖реНрда рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдкреЙрд╡рд░рд╢реЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░реЗрдВ:
<# .SYNOPSIS AD OU. .Description (Organization Unit). .PARAMETER Path , . .PARAMETER Name .PARAMETER Force . , OU . .OUTPUTS $null. . #> Function New-ADGroup([STRING]$Path, [STRING]$Name, [System.Management.Automation.SwitchParameter]$Force) { # , $ErrorActionPreference = "SilentlyContinue" If ($Force -eq $true) { New-ADOrganizationUnit -Path $Path } # DN $OUDN = Convert-ADPath2DN -Path $Path # - $OUDN = "LDAP://$OUDN" $OU = [ADSI]"$OUDN" # $Group = $OU.Create("group", "cn=$Name") $Group.Put("sAMAccountName", "$Name") $Group.SetInfo() # Trap { # , : # " " if ($_.Exception.ErrorCode -eq $SYSTEM_ERROR_CODE_OU_ALREADY_EXISTS) { Write-Host " $Name $Path " } } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
System.DirectoryServices.DirectoryEntry рд╡рд░реНрдЧ рдХреЗ
рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рднреА рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдлрд┐рд░ рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ (рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддрд╛рдХрд┐ рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдореА, рд╕рдорд╛рди enikeyshchiki рдЬрд┐рдиреНрд╣реЗрдВ AD / LDAP рдХреЗ рд╕рдВрдЧрдарди рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
# "gSales" "Unit1". - . New-ADGroup -Path "example.com/Test/MySuperScriptingResults/Fatal/Unit1" -Name "gSales" -Force
рд╕рдореВрд╣ рдиреАрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рд▓рд┐рдВрдХ рдХрд░рдирд╛
ActiveDirectory рдХреНрдпрд╛ рд╣реИ ? рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХрд╛
рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдордПрд╕ рд╕реЗ рдПрд▓рдбреАрдПрдкреА-рдЕрдиреБрдкрд╛рд▓рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕рдВрднрд╡рддрдГ
рдЬрдВрдЧрд▓реЛрдВ, рдбреЛрдореЗрди рдФрд░ рдЯреНрд░рд╕реНрдЯреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдЧрд╛, рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдб
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрдВрддреНрд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдЧрд╛, рдФрд░ eneykeyschik
рд╕рдореВрд╣ рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛ред
рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ? рдЙрдирдХреЗ рдкрд╛рд╕ enikeyschik рдХрд╛ рдкреВрд░рд╛ рдкреЗрд╢реЗрд╡рд░ рдЬреАрд╡рди рд╣реИ: рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдкрд░
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ,
IE рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓реЙрдХ
рдХрд░рдирд╛ , рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди "* -рдмрд╛рд░" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛,
SRPs , рдХрд╛рдо рдХреЗ рдШрдВрдЯреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЧреЗрдо рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ
рдХрд┐ рдЯрд╛рд╕реНрдХрдмрд╛рд░ рдХреЛ рд▓реЙрдХ рдХрд░рдирд╛ , рдЬрд┐рд╕реЗ рдорд╛рд░рд┐рд╡рд╛рдирд╛ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдорд╛рдВрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдПрдиреАрдХреЗрд╕рд┐рдХ рддреБрд░рдВрдд "рдЬреИрд╕рд╛ рдерд╛ рд╡реИрд╕рд╛ рд╣реА рд▓реМрдЯреЗрдВ, рдЕрдиреНрдпрдерд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред" рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдпрд╛рджреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЧрд╣рд░рд╛рдИ рддрдХ рдЧрдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА
рд╡рд┐рдВрдбреЛрдЬ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЬреАрдкреАрдУ рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереАрд╕рд┐рд╕ рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдФрд░ рдЬрдм рд╕реЗ рдЬреАрдкреАрдУ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрдВрддреНрд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдкрд╣рд▓реЗ GPO рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдмреЗрд╢рдХ, рдЗрд╕реЗ рдмрдирд╛рдПрдВ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛):
<# .SYNOPSIS . .Description . COM- GPMC (, GPMC ). .PARAMETER DomainDNSName FQDN- , . .PARAMETER GPOName . .OUTPUTS GPMGPO. . #> Function New-GPO([STRING]$DomainDNSName,[STRING]$GPOName) { $GPM = New-Object -ComObject GPMgmt.GPM # $GPMConstants = $GPM.GetConstants() # $GPMDomain = $GPM.GetDomain($DNS_DOMAIN_NAME, $DNS_DOMAIN_NAME, $Constants.UseAnyDC) # GPO $GPMGPO = $GPMDomain.CreateGPO() $GPMGPO.DisplayName = $GPOName Return $GPMGPO }
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ GPO рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ: рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рдЕрднреА рднреА рдпреВрдирд┐рдЯ рд╕реЗ рд▓рд┐рдВрдХ (
рд▓рд┐рдВрдХ ) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдРрд╕рд╛ рд░рд╣реЗрдЧрд╛ рдЬреИрд╕реЗ "рдирд┐рд╖реНрдХреНрд░рд┐рдп" (рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛, рдпрд╣ рд╕рдХреНрд░рд┐рдп рд╣реИ, рдкреНрд░рднрд╛рд╡ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдФрд░ OU рдХреЛ рдПрдХ рдиреАрддрд┐ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╡рд╕реНрддреБ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GPO рдХреЗ рдирд╛рдо рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ:
<# .SYNOPSIS COM- GPO . .Description GPO, . .PARAMETER DomainDNSName FQDN- , GPO. .PARAMETER GPOName GPO, . .OUTPUTS GPMGPO. COM- GPO ( $null, GPO ). #> Function Get-GPO([STRING]$DomainDNSName,[STRING]$GPOName) { $GPMGPO = $null # $ErrorActionPreference = "SilentlyContinue" # , GPMC $GPM = New-Object -ComObject GPMgmt.GPM # $GPMConstants = $GPM.GetConstants() # GPMDomain, $GPMDomain = $GPM.GetDomain($DomainDNSNAme, $DomainDNSNAme, $GPMConstants.UseAnyDC) # $GPMGPO = $GPMDomain.SearchGPOs($GPM.CreateSearchCriteria()) | Where-Object{$_.DisplayName -eq $GPOName} # GPO. - $null. Return $GPMGPO }
рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдХ GPO рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдмрд╛рдВрдзрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<# .SYNOPSIS (Link) (OU). .Description GPO . - . .PARAMETER DomainDNSName FQDN- , . .PARAMETER GPOName GPO. . .PARAMETER OUPath , GPO. .OUTPUTS $Null. . #> Function Mount-GPOToOU ([STRING]$GPOName,[STRING]$OUPath,[STRING]$DomainDNSName) { # GPO $GPMGPO = Get-GPO -DomainDNSName $DomainDNSName -GPOName $GPOName # , If ($GPMGPO -ne $Null) { # DN $OUDN = Convert-ADPath2DN -Path $OUPath # COM- GPMC $GPM = New-Object -ComObject GPMgmt.GPM $GPMConstants = $GPM.GetConstants() $GPMDomain = $GPM.GetDomain($DomainDNSName, $DomainDNSName, $Constants.UseAnyDC) # $GPMSOM = $GPMDomain.GetSOM($OUDN) # (Link) GPO $GPMSOM.CreateGPOLink(-1, $GPMGPO) | Out-Null trap { # COM-. . # , , . continue } } # GPO , else { Write-Host "Cannot find a GPO object named $GPOName" Throw "Cannot_find_GPO" } }
рдЕрдВрддрд┐рдо рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд, рдмрд▓реНрдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬреАрдкреАрдУ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ "рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреЗрд╢ рдХрд░рдирд╛" рд╕рдореВрд╣ рдиреАрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд▓рдЧ рдЗрдХрд╛рдИ (OU) рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░
рдЕрдЪрд╛рдирдХ рд░рд╛рдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ рдЕрдиреБрдореЛрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ "рдореБрдХрд╛рдмрд▓рд╛" рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рд╣рдЬ рдерд╛ред
рдПрдХ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд╛рдардХ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
GPMC COM рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: .NET рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ GPO рдХреЛ рд╕рдВрдЧрдардирд╛рддреНрдордХ рдЗрдХрд╛рдИ рдореЗрдВ рдмрд╛рдБрдзрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдореИрдВ
System.DirectoryServices.DirectoryEntry рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GPO рдХреЛ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред GPMC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рди рдХреЗрд╡рд▓
рд╕рдВрднрд╡ рд╣реИ , рдмрд▓реНрдХрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд
рд╕рд░рд▓ рднреА
рд╣реИ ред
GPO рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдореВрд╣ рдиреАрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдмрдВрдзрди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдЖрдЗрдП рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ - рд╣рдо рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рдХреНрдпреЛрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдЕрдкрдиреА рдореЗрд╣рдирдд рдореЗрдВ рдПрдирд╛рдЗрдХрд╕рдЪрд┐рдХ рдХреА рдорджрдж рдХрд░рдирд╛ред рдХрд┐рд╕ рддрд░рд╣ рдХреА рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ enikeyschik? рдирд┐рдпрдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рдЬрд┐рд╕реЗ рдЙрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди GPO рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ? рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ (рдпрд╛ рдПрдХ рд╣реА рдбреЛрдореЗрди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ OUs) рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ GPO рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ: рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдб рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рдореАрдбрд┐рдпрд╛ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ "рд╣рдЯрд╛рдиреЗ" рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
рд╕рдВрдмрдВрдзрд┐рдд GPO рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдирд┐рд░реНрджреЗрд╢)
рдХрд╛ рд╡рд┐рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП enikeyshchikov рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
рдХрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдФрд░ рднреА рдмрджрддрд░, рдиреЗрдЯрд╡рд░реНрдХ рднреАред рдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдирд╛рдЗрдХрд╕рдЪрд┐рдХ рдкреВрд░реЗ рджрд┐рди рдирдХрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИ, рдФрд░ рдкреНрд░рд┐рдВрдЯрд░ рд╕реЗ рдЬрд╛рдо рдкреЗрдкрд░ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЯреЙрдпрд▓реЗрдЯ рдореЗрдВ рдСрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рджрд░реНрд╢рдиреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ, рд╡реЗрдм рдкрд░ рдПрдХрд╛рдЙрдВрдЯреЗрдВрдЯ рдХреА рдмреЗрдЯреА рдХреЗ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдмрдВрдз рдвреВрдВрдвреЗрдВ, рдФрд░, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдПрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╣реА рд╣реИ "рдХреЛрдИ рднреА рдХреБрдВрдЬреАред"
рдФрд░ рдпрд╣рд╛рдБ рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рдПрдордПрд╕ GPMC рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд
рдЬреАрдкреАрдУ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХреАрдмреЛрд░реНрдб рдФрд░ рдкреЗрдЪрдХрд╢ рдХреЗ рд╣рдорд╛рд░реЗ рд▓рдбрд╝рд╛рдХреВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдпрд╣ рддрдВрддреНрд░ рдЖрдкрдХреЛ рдПрдХ GPO рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпреЗ рджреЛ GPO (рджрд╛рддрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛) рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЛрдореЗрди рдореЗрдВ рд╣реЛрдВред рдЦреИрд░, рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдЖрдкрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░реНрдг рд╕реНрд╡рдЪрд╛рд▓рд┐рддрддрд╛ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рд╕рдВрджрд░реНрдн рдиреАрддрд┐ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рд╕реНрд╡рдпрдВ
рдЖрдпрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ GPO рдмреИрдХрдЕрдк рдХреНрдпрд╛ рд╣реИ (MS рд╕реНрд╡рдпрдВ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣
рдмреИрдХрдЕрдк рд╣реИ , рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ):

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдпрд╛рддрд┐рдд GPO рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЕрдм рдпрд╣ рд╕реАрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣
GUID рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдХрдХрдерд╛рдУрдВ рдХреЗ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджреНрдпрдо рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреЗрд╡рд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рджреЗрдЦрдХрд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:
<# .SYNOPSIS GUID GPO () . .Description GPO, , - GUID, GUID' . , GPO GUID'. - GUID' . .PARAMETER Path Path - , GPO. .OUTPUTS System.String. GUID GPO, . #> Function Get-ExportedBackupGUID([STRING]$Path) { #, , - If (-not (Test-Path $Path)) { Write-Host " $Path " Throw "Backup dir path not found" } # $Children = Get-ChildItem -Force -LiteralPath $Path # , GUID' Foreach ($Child in $Children) { If ($Child.FullName -match "^*\{\w{8}\-(\w{4}\-){3}\w{12}\}$") { Return $Matches[0] } } # , GPO . Write-Host " $Path " Throw "GPO Backup(s) not found" }
рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП GPO рдХреЗ GUID рдЬреНрдЮрд╛рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ AD рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ GPO рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<# .SYNOPSIS GPO . .Description , GPO. , , GPO. GPO , . .PARAMETER BackupPath GPO .PARAMETER DNS_DOMAIN_NAME FQDN- , (). .PARAMETER MigrationTablePath . . .PARAMETER NewGPOName , . , (.. GPO , GPO-). .OUTPUTS $null. . #> Function Import-GPO ([STRING]$BackupPath, [STRING]$DNS_DOMAIN_NAME, [STRING]$MigrationTablePath, [STRING]$NewGPOName = "") { # GPO. , If (-not (Test-Path $BackupPath)) { Write-Host " GPO: $BackupPath" Throw "GPO Backup path not found" } # COM- GPMC - $GPM = New-Object -ComObject GPMgmt.GPM $GPMConstants = $GPM.GetConstants() $GPMDomain = $GPM.GetDomain($DNS_DOMAIN_NAME, $DNS_DOMAIN_NAME, $Constants.UseAnyDC) # GPMBackupDir, $GPMBackupDir = $GPM.GetBackupDir($BackupPath) # GUID GPO $BackupGUID = Get-ExportedBackupGUID -Path $BackupPath # - GPO $GPMBackup = $GPMBackupDir.GetBackup($BackupGUID) # GPO, : , # , If ($NewGPOName -eq "") { $TargetGPOName = $GPMBackup.GPODisplayName } else { $TargetGPOName = $NewGPOName } # GPO, $GPMGPO = Get-GPO -DomainDNSNAme $DNS_DOMAIN_NAME -GPOName $TargetGPOName # GPO , If ($GPMGPO -eq $Null) { $GPMGPO = New-GPO -DomainDNSNAme $DNS_DOMAIN_NAME -GPOName $TargetGPOName } # GPO $GPMGPO.Import(0, $GPMBackup) | Out-Null }
GPO :
##: "c:\good_gpo\" , , . #: ( ), "example.com/TestUnits/OU1" ##: # GPO "Imported_good_GPO" ( ). Import-GPO -BackupPath "c:\good_gpo\" -Dns_Domain_Name "example.com" -NewGPOName "Imported_good_GPO" # OU Mount-GPOToOU -GPOName "Imported_good_GPO" -OUPath "example.com/TestUnits/OU1" -DomainDNSName "example.com"
GPO
, Windows AD, , , GPO, .
, OU ┬лUsers┬╗, .. () - .. () : "
pAllow_Run_Any_Executable ", , , , , "
pDisallow_Run_Anything_Except_HelpDesk ", , .
, GPO . , -, тАФ . , GPO .
рдпрд╛рдиреА , GPO. , , (OU) GPO,
. , AD , .
( тАФ )
, GPO . , , .
"
gAllow_Run_Any_Executable ", GPO "
pAllow_Run_Any_Executable " . тАФ .
, ,
, GPO. , .
MSDN , GPO (, , AD)
System.DirectoryServices.ExtendedRightAccessRule . : , :
# PowerShell , ACE, $NewRule = New-Object -TypeName System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $objTrustee, $objRihgt, $objACT
, ArgumentList. :
$objTrustee тАФ , . , . , ┬л, ┬╗. ┬л
sales.example.com┬╗
.
( , , ), . , : , Windows. , ┬л┬╗ Windows ┬лAdministrator┬╗.
MS , . , , .
System.Security.Principal.WellKnownSidType :
# SID $SID = [System.Security.Principal.WellKnownSidType]::AccountDomainAdminsSid
Well-Known (.. ),
System.Security.Principal.NTAccount :
[STRING]$FQDN = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name $objTrustee = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList "$FQDN", "$Trustee"
,
( / ) .
,
$objRihgt ( ). "
" [ sales.example.com].
, (┬л┬╗, ┬л┬╗, ┬л┬╗ ..) тАФ ,
System.DirectoryServices.ActiveDirectoryRights , , :
<# .SYNOPSIS System.DirectoryServices.ActiveDirectoryRights . .Description System.DirectoryServices.ActiveDirectoryRights. . .PARAMETER StrRight System.DirectoryServices.ActiveDirectoryRights. .OUTPUTS System.DirectoryServices.ActiveDirectoryRights $null. System.DirectoryServices.ActiveDirectoryRights, , $null ( ) #> Function Convert-ToAccessRight([STRING]$StrRight) { $Res = $null $ErrorActionPreference = "SilentlyContinue" $Res = [System.DirectoryServices.ActiveDirectoryRights]::$StrRight $ErrorActionPreference = "Stop" Return $Res }
( "
"),
$objACT тАФ (, ┬л┬╗ (Allow), ┬л┬╗ (Deny)). , MSDN ,
System.Security.AccessControl.AccessControlType , ( ) :
# $objACT = [System.Security.AccessControl.AccessControlType]::Allow # $objACT = [System.Security.AccessControl.AccessControlType]::Deny
:
<# : "gForbidden_Users" GPO "pForbidden_GPO" "Example.com" #> #: # , [STRING]$FQDN = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name # "gForbidden_Users", $objTrustee = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList "$FQDN", "gForbidden_Users" # $objActDeny = [System.Security.AccessControl.AccessControlType]::Deny # $objRihgt = [System.DirectoryServices.ActiveDirectoryRights]::GenericRead # " 'gForbidden_Users' ". GPO 'gForbidden_Users' $NewRule = New-Object -TypeName System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList $objTrustee, $objRihgt, $objACT # GPO . $GPMGPO = Get-GPO -DomainDNSName "Example.com" -GPOName "pForbidden_GPO" # COM- .NET- System.DirectoryServices.DirectoryEntry [STRING]$GPOPath = $GPMGPO.Path $objGPO = New-Object System.DirectoryServices.DirectoryEntry -ArgumentList "LDAP://$GPOPath" # GPO # , $objGPO.ObjectSecurity.AddAccessRule($NewRule) | Out-Null # . $objGPO.CommitChanges() | Out-Null
, GPO AD . : , DFS (
\\domanname.example.com\SYSVOL\ ). , GPO. , , GPMC :

, , : GPO, . , , , SYSVOL, . , GPMC GPO. GPMC, () :
#FQDN- $DomainDNSName = "Example.com" # GPO, $GPOName = "pForbidden_GPO" # GPO $GPMGPO = Get-GPO -DomainDNSName $DomainDNSName -GPOName $GPOName # $GPOSecurityInfo = $GPMGPO.GetSecurityInfo() # , . # GPMC SYSVOL. $GPMGPO.SetSecurityInfo($GPOSecurityInfo) | Out-Null
рдирд┐рд╖реНрдХрд░реНрд╖
┬л┬╗ , ( ) AD тАФ , . , , .
тАФ , AD . , ┬л ┬╗, XML- ( , , , ..).
. , ,
CM_ActiveDirectory ,
PasteBin. , ,
CM_System , (
) .
, . , 2012 , , , . , тАФ ! , ┬л┬╗ .
, !