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

рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдерд╛рди рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рджреБрдирд┐рдпрд╛ рдХреА рдЕрдкреВрд░реНрдгрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХреМрд╢рд▓ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрдВрдк рдХрд┐рдпрд╛ред рдХрд╛рдо рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рднрд╛рд░ рдореЗрдВ рдХрд╛рдлреА рдХрдореА рдЖрдИ рдФрд░ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рдм рдХреБрдЫ рдирдИ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рддрд╣рдд рдЧрд╣рд░рд╛ рдФрд░ рдЧрд╣рд░рд╛ рдбреВрдмрдиреЗ рд▓рдЧрд╛ред рдЗрд╕ рд▓реЗрдЦ рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣реА рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрди рд╡рд┐рд╖рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд▓рдЧрднрдЧ 7 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЦреБрдж рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ, рдЬрдм рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдкрд░рд┐рдЪрд┐рдд рдЕрднреА рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдпрджрд┐ рдЖрдк рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ PowerShell рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╢реЗрд▓ рдХреНрдпреЛрдВ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕ рдмреЛрдирд╕ рд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рдкреБрд╕реНрддрдХ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдЬреЛ рдирдлрд░рдд рдлреИрд▓рд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕ рдорд╛рд╣реМрд▓ рдХрд╛ рд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ - рдПрдВрдбреНрд░реА рд╡реНрд▓рд╛рджрд┐рдореАрд░рд┐рдЪ рдкреЛрдкреЛрд╡, рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрд╛ рдкрд░рд┐рдЪрдп ред рд╣рд╛рдБ, рдпрд╣ PS рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд╣рд╛рдБ, рднрд╛рд╖рд╛ рдиреЗ рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ рд╕реБрдзрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреБрд╕реНрддрдХ рдЕрдЪреНрдЫреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдореМрд▓рд┐рдХ рдЪреАрдЬреЛрдВ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╢реАрдд рдЪреАрдиреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕реЗ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдХрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╢рд╛рдо рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖрдПрдБред

рдкреБрд╕реНрддрдХ рд▓реЗрдЦрдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ: https://andpop.ru/courses/winscript/books/posh_popov.pdf
рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб
рд╕реНрдЯрд╛рдЗрд▓рдЧрд╛рдЗрдбреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдЗрд╕рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рджреЛ рд░рд╛рдп рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреБрдЫ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░реЛрдВ рдиреЗ рджреЗрд╢реА рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рд╣реИ, рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рдореЗрдВ p88 рдФрд░ рдЧреЛрд▓рдВрдЧ рдореЗрдВ fmt рдЬрд╛рдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпреЗ рдЕрдореВрд▓реНрдп рд╕рдордп рдмрдЪрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдорд╛рдирдХ рдкреЙрд╡рд░рд╢реЗрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рдорд╛рд░реЗ рд╕рд┐рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпреВрдирд┐рдлреЙрд░реНрдо рдХреЛрдб рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдХреЛрдб рд▓рд┐рдЦрдХрд░ рд░рд┐рдлреНрд▓реЗрдХреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд╣реАрдВ) рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
Microsoft рджреНрд╡рд╛рд░рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдореЛрджрд┐рдд рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб, PowerShell v3 рдХреЗ рд╕рдордп рдореЗрдВ рд╕рдореБрджрд╛рдп рдореЗрдВ рдкреИрджрд╛ рд╣реБрдП рдереЗ рдФрд░ рддрдм рд╕реЗ рдпрд╣ рдЧреАрдердм рдкрд░ рдЦреБрд▓реЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ: PowerShellP PracticeAndStyleред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рднрдВрдбрд╛рд░ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА рднреА PowerShell ise рдореЗрдВ "рд╕рд╣реЗрдЬреЗрдВ" рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рдирд┐рдЪреЛрдбрд╝ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдирд┐рдореНрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЖ рдЬрд╛рдПрдЧрд╛:
- PowerShell PascalCase рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░, cmdlets, рдореЙрдбреНрдпреВрд▓ рдирд╛рдо, рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ;
- рднрд╛рд╖рд╛ рд╕рдВрдЪрд╛рд▓рдХ рдЬреИрд╕реЗ
if
, switch
, break
, process
, -match
рдмрд╣реБрдд рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ; - рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдХреЛ рдХреЗрд╡рд▓ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдХрд░реНрдирд┐рдЧрди рдФрд░ рд░рд┐рдЪреА рдХреА рд╢реИрд▓реА рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдж рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдирд╛рдордХ рдкреБрд╕реНрддрдХ рд╕реЗ рдЙрдирдХреА рдХрд╣рд╛рдиреА рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреА рд╣реИред
- рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдХрдВрд╕реЛрд▓ рд╕рддреНрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣реАрдВ рднреА рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рднреА
ps | ? processname -eq firefox | %{$ws=0}{$ws+=$_.workingset}{$ws/1MB}
рди рд▓рд┐рдЦреЗрдВ ps | ? processname -eq firefox | %{$ws=0}{$ws+=$_.workingset}{$ws/1MB}
ps | ? processname -eq firefox | %{$ws=0}{$ws+=$_.workingset}{$ws/1MB}
; - рд╕реНрдкрд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ, cmdlets рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЙрдирдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ , рд╕рд╛рде рд╣реА рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ cmdlet рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;
- рдХреЙрд▓рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рди рд▓рд┐рдЦреЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рддреА рд╣реИ;
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ [CmdletBinding ()] - рдпрд╣ рдЖрдкрдХреЗ cmdlet
-Verbose
рдФрд░ -Debug
рдЭрдВрдбреЗ рдФрд░ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рджреЗрдЧрд╛ ред рд╕рдореБрджрд╛рдп рдореЗрдВ рдХреБрдЫ рд╢реБрджреНрдзрддрд╛рд╡рд╛рджрд┐рдпреЛрдВ рдХреА рджреГрдврд╝ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рд░рд▓ рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХрд╛ рд╕рдорд░реНрдердХ рдирд╣реАрдВ рд╣реВрдВ; - рдЯрд┐рдкреНрдкрдгреА-рдЖрдзрд╛рд░рд┐рдд рд╕рд╣рд╛рдпрддрд╛ рд▓рд┐рдЦреЗрдВ: рдПрдХ рд╡рд╛рдХреНрдп, рдЯрд┐рдХрдЯ рд▓рд┐рдВрдХ, рдХреЙрд▓ рдЙрджрд╛рд╣рд░рдг;
#requires
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ PowerShell рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ;Set-StrictMode -Version Latest
рдЙрдкрдпреЛрдЧ Set-StrictMode -Version Latest
, рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА ;- рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ;
- PowerShell рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдордд рдХрд░реЛред рдкрд╛рд╡рд░рд╢реЗрд▓ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╢реЗрд▓ рд╣реИ рдФрд░ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЗрд╕рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдп рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд░реЛрдмреЛрдХреЙрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рдмреЗрд╢рдХ рдпрд╣ rsync рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рднреА рд╣реИред
рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдорджрдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рдПред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫрд╡рд┐ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рддреА рд╣реИ рдФрд░ рдПрдХ рдЖрдХрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд╡рддрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ (рд╕рд┐рд╡рд╛рдп рд╢рд╛рдпрдж рдПрдХреНрд╕рд┐рдл рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реЛрдЯреЗрд╢рди)ред .EXAMPLE
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рдбреЙрдЯрдиреЗрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдорд╛рди, рдЗрд╕рдореЗрдВ рдбреЙрдЯрдиреЗрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдкреВрд░реНрдг рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ:
<# .SYNOPSIS Resize-Image resizes an image file .DESCRIPTION This function uses the native .NET API to crop a square and resize an image file .PARAMETER InputFile Specify the path to the image .PARAMETER OutputFile Specify the path to the resized image .PARAMETER SquareHeight Define the size of the side of the square of the cropped image. .PARAMETER Quality Jpeg compression ratio .EXAMPLE Resize the image to a specific size: .\Resize-Image.ps1 -InputFile "C:\userpic.jpg" -OutputFile "C:\userpic-400.jpg"-SquareHeight 400 #> # requires -version 3 [CmdletBinding()] Param( [Parameter( Mandatory )] [string]$InputFile, [Parameter( Mandatory )] [string]$OutputFile, [Parameter( Mandatory )] [int32]$SquareHeight, [ValidateRange( 1, 100 )] [int]$Quality = 85 ) # Add System.Drawing assembly Add-Type -AssemblyName System.Drawing # Open image file $Image = [System.Drawing.Image]::FromFile( $InputFile ) # Calculate the offset for centering the image $SquareSide = if ( $Image.Height -lt $Image.Width ) { $Image.Height $Offset = 0 } else { $Image.Width $Offset = ( $Image.Height - $Image.Width ) / 2 } # Create empty square canvas for the new image $SquareImage = New-Object System.Drawing.Bitmap( $SquareSide, $SquareSide ) $SquareImage.SetResolution( $Image.HorizontalResolution, $Image.VerticalResolution ) # Draw new image on the empty canvas $Canvas = [System.Drawing.Graphics]::FromImage( $SquareImage ) $Canvas.DrawImage( $Image, 0, -$Offset ) # Resize image $ResultImage = New-Object System.Drawing.Bitmap( $SquareHeight, $SquareHeight ) $Canvas = [System.Drawing.Graphics]::FromImage( $ResultImage ) $Canvas.DrawImage( $SquareImage, 0, 0, $SquareHeight, $SquareHeight ) $ImageCodecInfo = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | Where-Object MimeType -eq 'image/jpeg' # https://msdn.microsoft.com/ru-ru/library/hwkztaft(v=vs.110).aspx $EncoderQuality = [System.Drawing.Imaging.Encoder]::Quality $EncoderParameters = New-Object System.Drawing.Imaging.EncoderParameters( 1 ) $EncoderParameters.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter( $EncoderQuality, $Quality ) # Save the image $ResultImage.Save( $OutputFile, $ImageCodecInfo, $EncoderParameters )
рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ <# ... #>
, рдпрджрд┐ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдкрд╣рд▓реЗ рдЖрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХреАрд╡рд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ PowerShell рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдорджрдж рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рд╣реИ - рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣рд╛рдпрддрд╛ :

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЪрд╛рд╣реЗ рд╡рд╣ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХрдВрд╕реЛрд▓ рд╣реЛ рдпрд╛ рдХреЛрдб рдПрдбрд┐рдЯрд░:

рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдЖрдкрдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдХреБрдЫ рд▓рд┐рдЦреЗрдВ, рдХреВрд▓рд░ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рд▓реМрдЯрдиреЗ рдкрд░ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдордЭ рд╣реЛрдЧреА рдХрд┐ рд▓рд┐рдЦрд┐рдд рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдХреАрд╡рд░реНрдб рдХреЛ рдХрдЯреНрдЯрд░рддрд╛ рд╕реЗ рднрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, PowerShell рдХреЛ рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рдФрд░ рдкреВрд░реНрдг рдирд╛рдо рджрд┐рдпрд╛ рд╣реИ, рддреЛ .SYNOPIS
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд╛рдХреНрдп рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рд╕рдЦреНрдд рдореЛрдб
PowerShell, рдХрдИ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣, рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рдХрдИ рд╕рдорд░реНрдердХ рд╣реИрдВ: рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрд░реНрдХ рд▓рд┐рдЦрдирд╛ рдПрдХ рджреЛ рдорд┐рдирдЯ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХрд╛ рдирд┐рд░реНрдгрдп рдПрдХ рд╣рдЬрд╝рд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдирд╛рдЬреБрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред
рдкрд░реАрдХреНрд╖рдг рдЪрд░рдг рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХрд╛рд░, рдЬреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЧрдарди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рд╕реБрдЕрд░ рдбрд╛рд▓ рджреЗрдЧрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд┐рд▓реЗрдЧрд╛ред рдЖрдЗрдЯрдо рдХрд╛ рдкреНрд░рдХрд╛рд░ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рддрд░реНрдХ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред
рд╕рдЦреНрдд рдореЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЪрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдирд╛ред
рдпрд╣ рдореЛрдб Set-StrictMode -Version Latest
cmdlet рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ "рдХрдареЛрд░рддрд╛" рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдореЗрд░реА рдкрд╕рдВрдж рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдЦреНрдд рдореЛрдб рдХреЙрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк $Input
рдЪрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ FileInfo
, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рддрддреНрд╡реЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд░рдгреА рдирд╣реАрдВ рд╣реЛрдЧреА:

рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ cmdlet рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:
$Items = @( Get-ChildItem C:\Users\snd3r\Nextcloud )
рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рдЦреНрдд рдореЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рдпрдо рдмрдирд╛рдПрдВ, рдЗрд╕рд╕реЗ рдЖрдк рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
ErrorActionPreference
рдЬрдм рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреАрдердм рдкрд░, рдореИрдВ рдЕрдХреНрд╕рд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рддрдВрддреНрд░ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреБрдкрдЪрд╛рдк рдЬрд╛рд░реА рдореЛрдб рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реВрдВред рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ PowerShell рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЧрд┐рдЯ рдмреБрдХ рдХреА рдПрдХ рдХрдбрд╝реА рд╣реИ)ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рддрддреНрдХрд╛рд▓ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рднреА рдорд╢реАрдиреЛрдВ рдореЗрдВ рдбреЛрдореЗрди рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдЬрдм рддрдХ рдХрд┐ рдпрд╣ sccm рддреИрдирд╛рддреА рдХреЗ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рддрдХ рдирд╣реАрдВ рдлреИрд▓рддрд╛ рд╣реИ рдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдлреИрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдПрдХ рдорд╢реАрди рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдирд╛ рдЕрдкреНрд░рд┐рдп рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдмреИрдХрдЕрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдмреИрдХрдЕрдк рд╕реБрд╕рдВрдЧрдд рд╣реИ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рд╣реИрдВред
рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ cmdlets рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреА рдирд┐рдореНрди рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ $ErrorActionPreference
: рд╕реНрдЯреЙрдк, рдкреВрдЫрддрд╛рдЫ, рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдирд┐рд▓рдВрдмрд┐рдд рдХрд░реЗрдВ, рдЪреБрдкрдЪрд╛рдк рдмрдВрдж рдХрд░реЗрдВ ред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ Stop
рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЙрдирдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧреА, рдФрд░ рдлрд╛рдпрд░рд╡реБрдб рдХреЛ "рдЪреБрдкрдЪрд╛рдк" рдирд╣реАрдВ рддреЛрдбрд╝рдирд╛, рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ "рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ" рдкреВрд░рд╛ рдХрд░рдирд╛ред
рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╢рд░реНрдд рд╣реИ - рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ try/catch
рдирд┐рд░реНрдорд╛рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддреНрд░реБрдЯрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрддреА рд╣реИред рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд╕реНрдЯреЙрдк рдкреВрд░реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, ErrorAction
рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ cmdlet рд╕реНрддрд░ рдкрд░ ErrorAction
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Get-ChildItem 'C:\System Volume Information\' -ErrorAction 'Stop'
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рджреЛ рддрд╛рд░реНрдХрд┐рдХ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ: рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ" рд╣рд▓ рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП ErrorAction
рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ; рдпрд╛ рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЪрд╛рд▓рди рдкрд░ -ErrorAction 'Continue'
ред рдореИрдВ рд╣рдореЗрд╢рд╛ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдЖрдк рдкрд░ рдереЛрдкрдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝
рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдЖрдк рдЕрдкрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ try/catch/throw/trap
рдСрдкрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреВрд░реЗ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреА рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ "рдЧреЗрдЯреЛ-рдиреВрдбрд▓" рд╢реНрд░реЗрдгреА рд╕реЗ рдПрдХ рдЪрд░рдо рдПрдВрдЯреАрдкреЗрдЯрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рднреА рдХрд╛рдлреА рдХрдо рд╣реБрдЖред
#requires -version 3 $ErrorActionPreference = 'Stop' # , , # $Logger = Get-Logger "$PSScriptRoot\Log.txt" # trap { $Logger.AddErrorRecord( $_ ) exit 1 } # $count = 1; while ( $true ) { try { # $StorageServers = @( Get-ADGroupMember -Identity StorageServers | Select-Object -Expand Name ) } catch [System.Management.Automation.CommandNotFoundException] { # , throw " Get-ADGroupMember , Active Directory module for PowerShell; $( $_.Exception.Message )" } catch [System.TimeoutException] { # if ( $count -le 3 ) { $count++; Start-Sleep -S 10; continue } # throw " - , $count ; $( $_.Exception.Message )" } # break }
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ trap
рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдЬрд╛рд▓ рд╣реИред рдпрд╣ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рд╡рд░рд╢реЗрд▓ рдЕрдиреНрдп "рдХреНрд▓рд╛рд╕рд┐рдХ" рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдкрд░рд┐рдЪрд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рддреНрд░реБрдЯрд┐ рдзрд╛рд░рд╛рдПрдВ, рд░рд┐рдЯрд░реНрди рдХреЛрдб рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрдЪрдп рдЪрд░ред рдпрд╣ рд╕рдм рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХрднреА-рдХрднреА рдмрд┐рдирд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ, рдкреВрд░реЗ, рдЕрд╡рд▓реЛрдХрди рд╡рд┐рд╖рдп рдкрд░ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ github рдкрд░ рдПрдХ рдЕрдЪреНрдЫреА рдЦреБрд▓реА рдХрд┐рддрд╛рдм рд╣реИ ред
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдХреЛрдб рдЬреЛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ PowerShell 5 рд╣реЛрдЧрд╛ (рдЬрд╣рд╛рдВ рдЖрдк рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рд╡рд░реНрдЧ рдХрд╛ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ, рдпрд╣ рдЖрдкрдХреА рд╕рд╛рджрдЧреА рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдмрд┐рдирд╛ рдХрдард┐рдирд╛рдИ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рдЬреЛрдбрд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред :
# " ", PowerShell v3 function Get-Logger { [CmdletBinding()] param ( [Parameter( Mandatory = $true )] [string] $LogPath, [string] $TimeFormat = 'yyyy-MM-dd HH:mm:ss' ) $LogsDir = [System.IO.Path]::GetDirectoryName( $LogPath ) New-Item $LogsDir -ItemType Directory -Force | Out-Null New-Item $LogPath -ItemType File -Force | Out-Null $Logger = [PSCustomObject]@{ LogPath = $LogPath TimeFormat = $TimeFormat } Add-Member -InputObject $Logger -MemberType ScriptMethod AddErrorRecord -Value { param( [Parameter( Mandatory = $true )] [string]$String ) "$( Get-Date -Format 'yyyy-MM-dd HH:mm:ss' ) [Error] $String" | Out-File $this.LogPath -Append } return $Logger }
рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ - рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рдордп рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред
рдпрд╣ рдордд рд╕реЛрдЪреЛ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рд╣реИ - рдмрд┐рдирд╛ рд▓рдХрдбрд╝реА рддреЛрдбрд╝рдХрд░ рдЧрд┐рд░рдиреЗ рдХрд╛ рд╕рдордпред
рдЙрдкрдХрд░рдг
рдХрдВрд╕реЛрд▓ рдПрдореБрд▓реЗрдЯрд░ рд╕реЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИред рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрддреИрдпрд╛ рдХреЗ рд╕рдорд░реНрдердХреЛрдВ рд╕реЗ рд╕реБрдирд╛ рдХрд┐ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрдВрд╕реЛрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЙрд╕ рд╡рдЧреИрд░рд╣ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рд▓реЛрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рджрд╛рд╡реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдХреЛрдИ рд╕рдлрд▓ рд╣реБрдЖ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдм рдкрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдирдП рдХрдВрд╕реЛрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдереА, рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ ред
рдкрд╣рд▓рд╛ рдХрджрдо рдХреЛрдиреНрдореБ рдпрд╛ рдЙрд╕рдХреЗ рд╕реАрдорд░реНрдб рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╡реИрд╕реЗ рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЧреАрддрд╛ рдФрд░ рдЕрдиреНрдп рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдиреНрдпреВрдирддрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реАрдорд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЦреБрдж рд╕реЗрдЯ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рд╕рд╛рд▓реЛрдВ рддрдХ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЙрдиреНрдлреНрдпреВ рдХреЛ рд╢реБрджреНрдз рдХреЙрдирдореВ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрди рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЯрд░реНрдорд┐рдирд▓ рдПрдореБрд▓реЗрдЯрд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕реНрдХреНрд░реАрди (tmux / рд╕реНрдХреНрд░реАрди рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЯреИрдм рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рднреВрдХрдВрдк-рд╢реИрд▓реА рдХрдВрд╕реЛрд▓ рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Conemu

рдЕрдЧрд▓рд╛ рдЪрд░рдг рдореИрдВ рдореЙрдбреНрдпреВрд▓ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ: рдУрд╣- рдорд╛рдп -рдкреЙрд╢ , рдкреЙрд╢-рдЧрд┐рдЯ рдФрд░ рдкреАрдПрд╕рдЖрд░рдИрдбреАрд▓рд╛рдЗрди ред рдкрд╣рд▓реЗ рджреЛ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░, рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрдорд╛рдВрдб рдХреА рд╕реНрдерд┐рддрд┐, рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╕реВрдЪрдХ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдореЗрдВ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдХрд░ рдкреНрд░реЛрдо рдХреЛ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдмрдирд╛ рджреЗрдВрдЧреЗред PSReadLine рдмрд╣реБрдд рдкреНрд░реЛрдореЛрдЯ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджрд░реНрдЬ рдХрдорд╛рдВрдб (CRTL + R) рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдПрдХ рдЦреЛрдЬ рдФрд░ CRTL + рд╕реНрдкреЗрд╕ рдкрд░ cmdlets рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯрд┐рдкреНрд╕:

рдФрд░ рд╣рд╛рдВ, рдЕрдм рдХрдВрд╕реЛрд▓ рдХреЛ CTRL + L рд╕реЗ рдХреНрд▓рд┐рдпрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ cls
рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб
рд╕рдВрдкрд╛рджрдХред PowerShell рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЬреЛ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ PowerShell ISE рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рддреАрди рдкреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрд╛, рд╡реЗ рдЗрд╕ рдЕрдиреБрднрд╡ рдХреЛ рдирд╣реАрдВ рднреВрд▓ рдкрд╛рдПрдВрдЧреЗред рдЯрд░реНрдорд┐рдирд▓ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдмреЗрд╕рд┐рдХ рдПрдбрд┐рдЯрд░ рдлреАрдЪрд░реНрд╕ рдХреА рдХрдореА, рдЬреИрд╕реЗ рдСрдЯреЛрдореЗрдЯрд┐рдХ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдСрдЯреЛ-рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯреНрд╕, рдХреЛрдб рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ (рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ) рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ - рдпрд╣ рд╕рдм ISE рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, PowerShell рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдРрд╕рд╛ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ (рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред рдФрд░ рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдкреЙрд╡рд░реНрд╕ рдореЗрдВ рдЫрдареЗ рд╕рдВрд╕реНрдХрд░рдг (рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛрд░ 6.0) рддрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ UTF8 BOM рд╣реИ, рдЕрдиреНрдпрдерд╛ рд░реВрд╕реА рднрд╛рд╖рд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред

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

рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП (рд╕рдВрдкрд╛рджрдХ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреЛрдиреЛрдВ) рдПрдХ рдЦреЛрдЬ рд╣реИ: File - Preferences - Settings
:

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

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

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

рдЯрд┐рдкреНрдкрдгреА рдЖрдзрд╛рд░рд┐рдд рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА:

рдпрджрд┐ cmdlet рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкреНрд▓реИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

Ctrl + Alt + J рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ:

рдпрджрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рднреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░рд┐рд╡реЗрд╢ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд░рд╣рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЕрднреА рддрдХ рддрддреИрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдБ рдЖрдк рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕реЗрдЯ рдЙрдкрдпреЛрдЧреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрдирдХреА рд╕реВрдЪреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЙрддреНрдкрд╛рджрдХрддрд╛
рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╖рдп рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рддрд░рдл, рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ 300ms рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдордп рджрд╕ рдорд┐рдирдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реИред рджреВрд╕рд░реА рдУрд░, рдХрдИ рдХрд╛рдлреА рд╕рд░рд▓ рддрд░рдХреАрдмреЗрдВ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рдЙрд╕рдХреА рдЧрддрд┐ рджреЛрдиреЛрдВ рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдирд┐рд░рдВрддрд░ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдиреАрдЪреЗ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдкреНрд░рджрд░реНрд╢рди рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╣реИ, рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рджреМрд░рд╛рди рд╕реЗрд╡рд╛ рдХреА рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреА рд╕рдЦреНрдд рд╕рдордп рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдкрдардиреАрдпрддрд╛ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЬрд╛рддреА рд╣реИ, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ рдлрд╝реЙрд░рдЪ
рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╣реИред рдмрд┐рдЬрд▓реА рдХреА рдЦрд╛рддрд┐рд░ рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг, рдПрдХ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдбреЙрдЯрдиреЗрдЯ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдмреЙрдХреНрд╕рд┐рдВрдЧ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдкрдиреА рдХреАрдордд рд╣реИ, рдЬреЛ рдХрднреА-рдХрднреА рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдкрд╣рд▓рд╛ рдХрджрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдирд╛ рд╣реИ рдФрд░, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, Foreach-Object
рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ рдЗрд╕реЗ рдлрд╝реЙрд░рдЪ рдХрдерди рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВред рдЖрдк рдЗрд╕ рддрдереНрдп рд╕реЗ рд╢рд░реНрдорд┐рдВрджрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Foreach-Object
рд▓рд┐рдП Foreach-Object
рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ - рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ foreach
рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреАрди рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЕрдиреБрднрд╡ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
: - , , :
Get-Content D:\temp\SomeHeavy.log | Select-String '328117'
тАФ , . тАФ , , Get-Content
. string
, , . тАФ , :
When reading from and writing to binary files, use the AsByteStream parameter and a value of 0 for the ReadCount parameter. A ReadCount value of 0 reads the entire file in a single read operation. The default ReadCount value, 1, reads one byte in each read operation and converts each byte into a separate object, which causes errors when you use the Set-Content cmdlet to write the bytes to a file unless you use AsByteStream
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content
Get-Content D:\temp\SomeHeavy.log -ReadCount 0 | Select-String '328117'
:

, . Select-String
тАФ . , Select-String
. , Select-String
, , :
foreach ( $line in ( Get-Content D:\temp\SomeHeavy.log -ReadCount 0 )) { if ( $line -match '328117' ) { $line } }
30 , - 30%, , , , - , ( ;-). , . , -match
; тАФ . , тАФ тАФ - , .
тАФ - , " " :
foreach ( $line in ( Get-Content D:\temp\SomeHeavy.log -ReadCount 0 )) { if ( $line -match '328117' ) { "$( Get-Date -UFormat '%d.%m.%Y %H:%M:%S') $line" | Out-File D:\temp\Result.log -Append } }
Measure-Command
:
Hours : 2 Minutes : 20 Seconds : 9 Milliseconds : 101
. , , , . , PowerShell , , тАФ . , , тАФ StringBuilder . , , . , .
$StringBuilder = New-Object System.Text.StringBuilder foreach ( $line in ( Get-Content D:\temp\SomeHeavy.log -ReadCount 0 )) { if ( $line -match '328117' ) { $null = $StringBuilder.AppendLine( "$( Get-Date -UFormat '%d.%m.%Y %H:%M:%S') $line" ) } } Out-File -InputObject $StringBuilder.ToString() -FilePath D:\temp\Result.log -Append -Encoding UTF8
5 , :
Hours : 0 Minutes : 5 Seconds : 37 Milliseconds : 150
Out-File -InputObject
, , . тАФ . тАФ Get-Help
-Full
, Accept pipeline input? true (ByValue)
:
-InputObject <psobject> Required? false Position? Named Accept pipeline input? true (ByValue) Parameter set name (All) Aliases None Dynamic? false
PowerShell :

StringBuilder
:

, , 3 3. dotnet- тАФ StreamReader .
$StringBuilder = New-Object System.Text.StringBuilder $StreamReader = New-Object System.IO.StreamReader 'D:\temp\SomeHeavy.log' while ( $line = $StreamReader.ReadLine()) { if ( $line -match '328117' ) { $null = $StringBuilder.AppendLine( "$( Get-Date -UFormat '%d.%m.%Y %H:%M:%S') $line" ) } } $StreamReader.Dispose() Out-File -InputObject $StringBuilder.ToString() -FilePath C:\temp\Result.log -Append -Encoding UTF8
Hours : 0 Minutes : 5 Seconds : 33 Milliseconds : 657
, . , , , , 2. , :

тАФ "", тАФ StringBuilder
тАФ "" . , ( 100) . тАФ 90% ( , ):
$BufferSize = 104857600 $StringBuilder = New-Object System.Text.StringBuilder $BufferSize $StreamReader = New-Object System.IO.StreamReader 'C:\temp\SomeHeavy.log' while ( $line = $StreamReader.ReadLine()) { if ( $line -match '1443' ) { # if ( $StringBuilder.Length -gt ( $BufferSize - ( $BufferSize * 0.1 ))) { Out-File -InputObject $StringBuilder.ToString() -FilePath C:\temp\Result.log -Append -Encoding UTF8 $StringBuilder.Clear() } $null = $StringBuilder.AppendLine( "$( Get-Date -UFormat '%d.%m.%Y %H:%M:%S') $line" ) } } Out-File -InputObject $StringBuilder.ToString() -FilePath C:\temp\Result.log -Append -Encoding UTF8 $StreamReader.Dispose()
Hours : 0 Minutes : 5 Seconds : 53 Milliseconds : 417
1 :

, . , , StreamWriter , , ;-) , , .
- тАФ , . , тАФ . Select-String
Out-File
, OutOfMemoryException
, тАФ .
, PowerShell , тАФ , : PowerShell тАФ , .
, StringBuilder
dir
тАФ ( ). :
$CurrentPath = ( Get-Location ).Path + '\' $StringBuilder = New-Object System.Text.StringBuilder foreach ( $Line in ( &cmd /c dir /b /s /ad )) { $null = $StringBuilder.AppendLine( $Line.Replace( $CurrentPath, '.' )) } $StringBuilder.ToString()
Hours : 0 Minutes : 0 Seconds : 3 Milliseconds : 9
$StringBuilder = New-Object System.Text.StringBuilder foreach ( $Line in ( Get-ChildItem -File -Recurse | Resolve-Path -Relative )) { $null = $StringBuilder.AppendLine( $Line ) } $StringBuilder.ToString()
Hours : 0 Minutes : 0 Seconds : 16 Milliseconds : 337
$null тАФ . , тАФ Out-Null
; , ( $null
) , .
# : $null = $StringBuilder.AppendLine( $Line ) # : $StringBuilder.AppendLine( $Line ) | Out-Null
, , . Compare-Object
, , , . robocopy.exe, ( PowerShell 5), :
class Robocopy { [String]$RobocopyPath Robocopy () { $this.RobocopyPath = Join-Path $env:SystemRoot 'System32\Robocopy.exe' if ( -not ( Test-Path $this.RobocopyPath -PathType Leaf )) { throw ' ' } } [void]CopyFile ( [String]$SourceFile, [String]$DestinationFolder ) { $this.CopyFile( $SourceFile, $DestinationFolder, $false ) } [void]CopyFile ( [String]$SourceFile, [String]$DestinationFolder, [bool]$Archive ) { $FileName = [IO.Path]::GetFileName( $SourceFile ) $FolderName = [IO.Path]::GetDirectoryName( $SourceFile ) $Arguments = @( '/R:0', '/NP', '/NC', '/NS', '/NJH', '/NJS', '/NDL' ) if ( $Archive ) { $Arguments += $( '/A+:a' ) } $ErrorFlag = $false &$this.RobocopyPath $FolderName $DestinationFolder $FileName $Arguments | Foreach-Object { if ( $ErrorFlag ) { $ErrorFlag = $false throw "$_ $ErrorString" } else { if ( $_ -match '(?<=\(0x[\da-f]{8}\))(?<text>(.+$))' ) { $ErrorFlag = $true $ErrorString = $matches.text } else { $Logger.AddRecord( $_.Trim()) } } } if ( $LASTEXITCODE -eq 8 ) { throw 'Some files or directories could not be copied' } if ( $LASTEXITCODE -eq 16 ) { throw 'Robocopy did not copy any files. Check the command line parameters and verify that Robocopy has enough rights to write to the destination folder.' } } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder ) { $this.SyncFolders( $SourceFolder, $DestinationFolder, '*.*', '', $false ) } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder, [Bool]$Archive ) { $this.SyncFolders( $SourceFolder, $DestinationFolder, '*.*', '', $Archive ) } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder, [String]$Include ) { $this.SyncFolders( $SourceFolder, $DestinationFolder, $Include, '', $false ) } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder, [String]$Include, [Bool]$Archive ) { $this.SyncFolders( $SourceFolder, $DestinationFolder, $Include, '', $Archive ) } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder, [String]$Include, [String]$Exclude ) { $this.SyncFolders( $SourceFolder, $DestinationFolder, $Include, $Exclude, $false ) } [void]SyncFolders ( [String]$SourceFolder, [String]$DestinationFolder, [String]$Include, [String]$Exclude, [Bool]$Archive ) { $Arguments = @( '/MIR', '/R:0', '/NP', '/NC', '/NS', '/NJH', '/NJS', '/NDL' ) if ( $Exclude ) { $Arguments += $( '/XF' ) $Arguments += $Exclude.Split(' ') } if ( $Archive ) { $Arguments += $( '/A+:a' ) } $ErrorFlag = $false &$this.RobocopyPath $SourceFolder $DestinationFolder $Include $Arguments | Foreach-Object { if ( $ErrorFlag ) { $ErrorFlag = $false throw "$_ $ErrorString" } else { if ( $_ -match '(?<=\(0x[\da-f]{8}\))(?<text>(.+$))' ) { $ErrorFlag = $true $ErrorString = $matches.text } else { $Logger.AddRecord( $_.Trim()) } } } if ( $LASTEXITCODE -eq 8 ) { throw 'Some files or directories could not be copied' } if ( $LASTEXITCODE -eq 16 ) { throw 'Robocopy did not copy any files. Check the command line parameters and verify that Robocopy has enough rights to write to the destination folder.' } } }
, ( ), тАФ .
, : Foreach-Object
!? , : foreach
, Foreach-Object
тАФ , , , , . .
, :
$Robocopy = New-Object Robocopy # $Robocopy.CopyFile( $Source, $Dest ) # $Robocopy.SyncFolders( $SourceDir, $DestDir ) # .xml $Robocopy.SyncFolders( $SourceDir, $DestDir , '*.xml', $true ) # *.zip *.tmp *.log $Robocopy.SyncFolders( $SourceDir, $DestDir, '*.*', '*.zip *.tmp *.log', $true )
тАФ , , ; , , , :
foreach
Foreach-Object
;
;
/ , ;
StringBuilder
;
, - ;
( "" );
: - , .
Jobs
, , , , , , . . , IO, .
ssdрдпрд╣ рд╣рд╛рдЗрдкрд░-рд╡реА рд╕реЗ ssd рдореЗрдВ рд╣реМрд╕рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ 2019 рдХрд╛ рдкрд╣рд▓рд╛ рдмреВрдЯ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ hdd рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):

PowerShell ( Get-Command *-Job
), .
, , , :
$Job = Start-Job -ScriptBlock { Write-Output 'Good night' Start-Sleep -S 10 Write-Output 'Good morning' } $Job | Wait-Job | Receive-Job Remove-Job $Job
, тАФ , . .
, :

https://xaegr.wordpress.com/2011/07/12/threadping/
, , тАФ , . , , (50 тАФ 50 ):

. , тАФ , . тАФ , .
, , , - .
Runspaces
тАФ Beginning Use of PowerShell Runspaces: Part 1 . , тАФ PowerShell , . (, PowerShell ), : ( ) . , .
WPF , PowerShell, . тАФ , . тАФ , "" . .
, .

# $GUISyncHash = [hashtable]::Synchronized(@{}) <# WPF #> $GUISyncHash.FormXAML = [xml](@" <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Sample WPF Form" Height="510" Width="410" ResizeMode="NoResize"> <Grid> <Label Content=" " HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="37" Width="374" FontSize="18"/> <Label Content="" HorizontalAlignment="Left" Margin="16,64,0,0" VerticalAlignment="Top" Height="26" Width="48"/> <TextBox x:Name="BackupPath" HorizontalAlignment="Left" Height="23" Margin="69,68,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="300"/> <Label Content="" HorizontalAlignment="Left" Margin="16,103,0,0" VerticalAlignment="Top" Height="26" Width="35"/> <TextBox x:Name="RestorePath" HorizontalAlignment="Left" Height="23" Margin="69,107,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="300"/> <Button x:Name="FirstButton" Content="тИЪ" HorizontalAlignment="Left" Margin="357,68,0,0" VerticalAlignment="Top" Width="23" Height="23"/> <Button x:Name="SecondButton" Content="тИЪ" HorizontalAlignment="Left" Margin="357,107,0,0" VerticalAlignment="Top" Width="23" Height="23"/> <CheckBox x:Name="Check" Content=" " HorizontalAlignment="Left" Margin="16,146,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.113,-0.267" Width="172"/> <Button x:Name="Go" Content="Go" HorizontalAlignment="Left" Margin="298,173,0,0" VerticalAlignment="Top" Width="82" Height="26"/> <ComboBox x:Name="Droplist" HorizontalAlignment="Left" Margin="16,173,0,0" VerticalAlignment="Top" Width="172" Height="26"/> <ListBox x:Name="ListBox" HorizontalAlignment="Left" Height="250" Margin="16,210,0,0" VerticalAlignment="Top" Width="364"/> </Grid> </Window> "@) <# #> $GUISyncHash.GUIThread = { $GUISyncHash.Window = [Windows.Markup.XamlReader]::Load(( New-Object System.Xml.XmlNodeReader $GUISyncHash.FormXAML )) $GUISyncHash.Check = $GUISyncHash.Window.FindName( "Check" ) $GUISyncHash.GO = $GUISyncHash.Window.FindName( "Go" ) $GUISyncHash.ListBox = $GUISyncHash.Window.FindName( "ListBox" ) $GUISyncHash.BackupPath = $GUISyncHash.Window.FindName( "BackupPath" ) $GUISyncHash.RestorePath = $GUISyncHash.Window.FindName( "RestorePath" ) $GUISyncHash.FirstButton = $GUISyncHash.Window.FindName( "FirstButton" ) $GUISyncHash.SecondButton = $GUISyncHash.Window.FindName( "SecondButton" ) $GUISyncHash.Droplist = $GUISyncHash.Window.FindName( "Droplist" ) $GUISyncHash.Window.Add_SourceInitialized({ $GUISyncHash.GO.IsEnabled = $true }) $GUISyncHash.FirstButton.Add_Click( { $GUISyncHash.ListBox.Items.Add( 'Click FirstButton' ) }) $GUISyncHash.SecondButton.Add_Click( { $GUISyncHash.ListBox.Items.Add( 'Click SecondButton' ) }) $GUISyncHash.GO.Add_Click( { $GUISyncHash.ListBox.Items.Add( 'Click GO' ) }) $GUISyncHash.Window.Add_Closed( { Stop-Process -Id $PID -Force }) $null = $GUISyncHash.Window.ShowDialog() } $Runspace = @{} $Runspace.Runspace = [RunspaceFactory]::CreateRunspace() $Runspace.Runspace.ApartmentState = "STA" $Runspace.Runspace.ThreadOptions = "ReuseThread" $Runspace.Runspace.Open() $Runspace.psCmd = { Add-Type -AssemblyName PresentationCore, PresentationFramework, WindowsBase }.GetPowerShell() $Runspace.Runspace.SessionStateProxy.SetVariable( 'GUISyncHash', $GUISyncHash ) $Runspace.psCmd.Runspace = $Runspace.Runspace $Runspace.Handle = $Runspace.psCmd.AddScript( $GUISyncHash.GUIThread ).BeginInvoke() Start-Sleep -S 1 $GUISyncHash.ListBox.Dispatcher.Invoke( "Normal", [action] { $GUISyncHash.ListBox.Items.Add( '' ) }) $GUISyncHash.ListBox.Dispatcher.Invoke( "Normal", [action] { $GUISyncHash.ListBox.Items.Add( ' ' ) }) foreach ( $item in 1..5 ) { $GUISyncHash.Droplist.Dispatcher.Invoke( "Normal", [action] { $GUISyncHash.Droplist.Items.Add( $item ) $GUISyncHash.Droplist.SelectedIndex = 0 }) } $GUISyncHash.ListBox.Dispatcher.Invoke( "Normal", [action] { $GUISyncHash.ListBox.Items.Add( 'While ( $true ) { Start-Sleep -S 10 }' ) }) while ( $true ) { Start-Sleep -S 10 }
WPF github, , smart : https://github.com/snd3r/GetDiskSmart/ . , MVVM:

Visual Studio, Community Edition , xaml- wpf тАФ https://github.com/punker76/kaxaml

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
PowerShell тАФ Windows-. , , , .
, , "PowerShell, ", . , тАФ , . . , - , - .
тАФ .

PS Boomburum , 2019 powershell тАФ .