рд╕реНрд╡рдЪрд╛рд▓рд┐рдд DocsVision рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛



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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдорддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ: рдЙрдкрдХрд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ - рдХреЛрдИ рдЦреБрд╢реА рдирд╣реАрдВред рд╣рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рддреЛ, рджрд┐рдпрд╛ рдЧрдпрд╛ - рд╕рд┐рд╕реНрдЯрдо рдбреЙрдХреНрд╕рд╡рд┐рдЬрд╝рди (рдЗрд╕рдХреЗ рдмрд╛рдж рдХрд╛ рдбреАрд╡реА) рд╕рдВрд╕реНрдХрд░рдг 4.5 рдПрд╕рдЖрд░ 1ред рдФрд░, рдХрд╛рд░реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ (рдХрд╣рддреЗ рд╣реИрдВ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдиреЗ рдПрдХ рдирдпрд╛ рдЦрд░реАрджрд╛ рд╣реИ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╣реИред

рдХрд┐рд╕реА рдирдП рд╕реНрдерд╛рди рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЗ рдЬрд╛рддреЗ рд╕рдордп рд╕реНрдерд╛рдиреАрдп рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдПрдХ рдХрджреНрджреВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЬрдм рд╕реЗ рдорд╛рдирдХ DV рд╕рдореВрд╣ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ, рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреМрди рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ - рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рдорд╛рдирдХ рдЙрдкрдХрд░рдг



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдЯреВрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдбреЙрдХреНрд╕рд╡рд┐рдЬрд╝рди рд╣рдореЗрдВ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдпрд╣ DVprofessionals.blogspot.com/2010/03/blog-post_22.html рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди - рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВред

рдЫрд╡рд┐

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

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдЕрдиреБрд╕рдВрдзрд╛рди



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

рдореБрдЦреНрдп рд░реБрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ dvsys_instances рдФрд░ dvsys_security рд╣реИрдВ ред рдкрд╣рд▓реЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ (рдХрд╛рд░реНрдб, рдлрд╝реЛрд▓реНрдбрд░, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рджреВрд╕рд░рд╛ред рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд░рдЦрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИред

рдЫрд╡рд┐
рдЫрд╡рд┐


рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ DVsys_instances.SDID рдФрд░ DVsys_security.ID рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд▓рд┐рдП рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдпреЗ рдореВрд▓реНрдп рдХреНрд░рдорд╢рдГ 277571 рдФрд░ 6639 рд╣реИрдВред

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

рд╕рдВрдХрд▓реНрдкрд┐рдд рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди



PowerShell рдХреЛ рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

$SIDReplacement = @{ "S-1-5-21-2179127525-659978549-3108502893-1019" = "a31003\akushsky"; #akushsky "S-1-5-21-2179127525-659978549-3108502893-1016" = "a31003\ASPNET"; #ASPNET "S-1-5-21-2179127525-659978549-3108502893-1008" = "a31003\DocsVision Administrators"; #DV Administrators "S-1-5-21-2179127525-659978549-3108502893-1010" = "a31003\DocsVision Power Users"; #DV Power Users "S-1-5-21-2179127525-659978549-3108502893-1012" = "a31003\DocsVision Users"; #DV Users "S-1-5-21-2179127525-659978549-3108502893-1026" = "a31003\dobriy"; #DV Editors } $SQLServerName = "a31003" $SQLDatabaseName = "DV-BASE" 


рдореБрдЭреЗ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдЦрд╛рддреЗ SID рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ (рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, Google рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ)ред рдФрд░ рдирдП - рд╣рдо рдЦрд╛рддреЛрдВ рдФрд░ рдЙрдирдХреЗ рдПрд╕рдЖрдИрдбреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

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

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

 # Struct for log add-type @" public struct DVObject { public string ID; public string Description; public string Accounts; } "@ 


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

 SELECT I.InstanceID, I.Description, S.ID, S.SecurityDesc FROM [DV-BASE].[dbo].[dvsys_security] S LEFT JOIN [DV-BASE].[dbo].[dvsys_instances] I ON I.SDID = S.ID 


рдЗрд╕рд▓рд┐рдП, рдХрдИ рдмрд╛рд░ рдПрдХ рд╣реА рд╡рд┐рд╡рд░рдгрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

 # Replace SDDL in each row only once $IDList = New-Object System.Collections.Generic.HashSet[Guid] ... # We need only one SQL-request for each ID if ($IDList.Contains($row["ID"])) {continue} else {$isOk = $IDList.Add($row["ID"])} 


рдФрд░ рдлрд┐рд░ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
  1. рдкрд░рд┐рдгрд╛рдореА SecurityDesc рдПрдХ Base64 рдПрдиреНрдХреЛрдбреЗрдб рдмрд╛рдЗрдирд░реА рдХреИрд░реЗрдХреНрдЯрд░ рдЕрдиреБрдХреНрд░рдо рд╣реИред рдФрд░, SID рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ SDDL рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рд╛рд░реВрдк рд╡рд┐рд╡рд░рдг MSDN рдкрд░ рд╣реИред рдФрд░ рдЕрдм рдПрдХ рд╣реА рдмрд╛рдд, рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде:

      # Convert SDDL from Base64 to binary form $ObjectWithSDDL = ([wmiclass]"Win32_SecurityDescriptorHelper") .BinarySDToSDDL([System.Convert]::FromBase64String($row["SecurityDesc"])) $sddl = $ObjectWithSDDL.SDDL 

  2. рдЕрдЧрд▓рд╛, рдПрд╕рдбреАрдбреАрдПрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╕рд┐рдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкрддреНрд░рд╛рдЪрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рд╡реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

      # Match all SIDs and replace [regex]::Matches($sddl,"(S(-\d+){2,8})") | sort index -desc | % { if ($SIDReplacement.ContainsKey($_.ToString())) { # Translate NT account name to SID $objUser = New-Object System.Security.Principal.NTAccount($SIDReplacement[$_.ToString()]) $strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier]) # Replace it in SDDL $sddl = $sddl.Remove($_.index,$_.length) $sddl = $sddl.Insert($_.index,$strSID.Value) # Add to list of current object accounts $dvobject.Accounts += $SIDReplacement[$_.ToString()] $dvobject.Accounts += "`n" # Set replace completed $replaceComplete = $true } } 

  3. рдпрджрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд░рд┐рд╡рд░реНрд╕ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
      if ($replaceComplete) { # Add current info object to list $DVObjectList.Add($dvobject) $binarySDDL = ([wmiclass]"Win32_SecurityDescriptorHelper").SDDLToBinarySD($sddl).BinarySD $ret = [System.Convert]::ToBase64String($binarySDDL) ##### Update database ##### # Update query for currently replaced SDDL $SqlQuery = "UPDATE [dbo].[dvsys_security] SET Hash = '" + $binarySDDL.GetHashCode() + "', SecurityDesc = '" + $ret + "' WHERE ID = CONVERT(uniqueidentifier, '" + $row["ID"] + "')" # Attach query to command $UpdateSqlCmd.CommandText = $SqlQuery # Execute update query if ($UpdateSqlCmd.ExecuteNonQuery()) { Write-host "Update true for ID: " $row["ID"] } else { Write-host "Update false for ID: " $row["ID"] } } 



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрдВрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ, рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдмреАрдЪ, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреИрд╕реЗред

рдЕрдВрдд рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╡рд░реНрдгрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ ред

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


All Articles