рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рджрд┐рди рдХрд╛ рд╕рдордпред

рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рд╣рдо рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреА рдЦреЛрдЬ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ рдЬрд┐рди рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдмреИрдареЗ рд╣реИрдВред рдпрд╣ рдЙрд╕ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рдЖрдкрдХреЛ vlans (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд╕рд┐рд░реНрдл рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП) рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
"

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

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

рдкреБрдЯреНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ рдФрд░ рдореИрдВ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рд╛рдВ, рди рдХреЗрд╡рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░реЗрдВред PoSh рдХреНрдпреЛрдВ? рдЙрд╕ рд╕рдордп, рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдПрдХ рдХреНрд░рд╢ рдерд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЙрд╕рд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реБрдЖ), рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ PoSh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдЯреЗрд▓рдиреЗрдЯ рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдХрд░рдг рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдПрд╕рдПрд╕рдПрдЪ рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ) рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд╛рд╡рд░рд╢реЗрд▓ рдЗрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдлрд┐рд░ рдореИрдВрдиреЗ 2 рдХрдиреЗрдХреНрд╢рди рддрдВрддреНрд░реЛрдВ рдХреА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛:
  1. plink.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ (рдкреЛрдЯреАрди рд╕реЗ)
  2. Netcmdlets рдлрд░реНрдо / рдПрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░

рдореБрдЦреНрдп рд░реВрдк рд╕реЗ plink.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореБрдЭреЗ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рд╢рд╛рдпрдж рд╣реА рдХрд▓рд╛ рдХрд╛ рдХрд╛рдо рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд╛рд▓, рдвреЗрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереА рдЬрд┐рд╕реЗ рдХреЛрдИ рднреА рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдпрд╣рд╛рдВ рд▓рд┐рдЦреЗрдВред
рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ (рд╕рдордп-рд╕рдордп рдкрд░, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рднреА рдХрд┐рдпрд╛ рдерд╛), рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд┐рдпрд╛ред

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

рд╡рд╛рдж, рдЙрдареЛ!

рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрд╡рд┐рдЪ рдкрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдареАрдХ рд╣реИ, рдЙрддреНрдХреГрд╖реНрдЯ, рдлрд┐рд░ рд╣рдо рдЯреЗрд▓рдиреЗрдЯ рдкрд░ рд╣рдереМрдбрд╝рд╛ рдорд╛рд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдФрд░ 1 рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ: рдЪреВрдВрдХрд┐ рдЯреЗрд▓рдиреЗрдЯ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо plink.exe (рдкреБрдЯреНрдЯреА рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдкреНрд░рд╕рд┐рджреНрдзрд┐ NetCmdlets рдХреЛ рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рдХрдВрдкрдиреА рдХреЗ рддрдХрдиреАрдХреА рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдЦрд┐рд░рдХрд╛рд░ рдореИрдВрдиреЗ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдФрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
  1. рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  2. рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
  3. рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдФрд░ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд┐рди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рд╕рдм рджрд┐рдЦрд╛рдПрдВ рддрд╛рдХрд┐ рд╡рд╣ (рдпрд╛рдиреА рдореИрдВ) рд╕рдВрддреБрд╖реНрдЯ рд╣реЛ рдЬрд╛рдП

NetCmdlets

рдЪреВрдВрдХрд┐ рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдпрд╛, рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдФрд░ рдЗрди cmdlets рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж:
рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рдЖрдк рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг (30 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдФрд░ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг ($ 100 рдкреНрд░рддрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХрд╛рд▓ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдпреЗ cmdlets powerhellmagazine.com рдкрд░ рдореБрдлреНрдд рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдерд┐рдпрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреАред рдЗрд╕рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рдкрд░ рд░рд╣реЗрдВ! рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдореЗрдврд╝реЗред
рдЗрди cmdlets рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЙрдирдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рд╕реЗрдЯ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣рд░ рдЪреАрдЬ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ 2 рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛:

рдХреЗрд╡рд▓ рдЗрдирд╡реЛрдХ-рдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рддрд┐рд░рд╕реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдпреА рд╕рддреНрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдпрд╛рдиреА, рдХрд╣рддреЗ рд╣реИрдВ, рдЕрдм рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ "conf t" рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ)ред рдЗрд╕рд▓рд┐рдП, рдХрдиреЗрдХреНрдЯ-рдПрд╕рдПрд╕рдПрдЪ cmdlet рдХреЗ рд╕рд╛рде, рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрдирд╡реЛрдХ-рдПрд╕рдПрд╕рдПрдЪ cmdlet рдЪрд▓рд╛рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ cmdlets рдЧреЗрдЯ-рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ cmdlet рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЙрдкрдХрд░рдг рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ), рдЕрд░реНрдерд╛рдд рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ plink.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛)ред рдореИрдВ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЦреЗрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ

рдореИрдВ рд╕рд┐рд╕реНрдХреЛ iOS рд╢реЗрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╣реБрдд рд░реЛрдорд╛рдВрдЯрд┐рдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ Invoke-SSH cmdlet рдЯреЗрдХреНрд╕реНрдЯ рдХреЙрд▓рдо рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЪрд░ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЯреЗрдХреНрд╕реНрдЯ рдорд┐рд▓рддрд╛ рд╣реИред
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬреЛ рдХреЛрдИ рднреА рдмрдбрд╝реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рдЯреБрдХрдбрд╝реЗ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рд╢рд╛рдирджрд╛рд░ рдврдВрдЧ рд╕реЗ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗред
рдЕрднреА рдХреЗ рд▓рд┐рдП, PowerShell рдХреЛ Action 2-nd рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрдврд╝реЗрдВред рдЬреЛ рдХреЛрдИ PoSh рд╕реАрдЦ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдЗрд╕рдореЗрдВ рдореИрдВрдиреЗ regexp рдирд╛рдо рдХреА рдРрд╕реА рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде, рдЗрд╕рдореЗрдВ $ Mathces рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ, рдЬреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдореИрдЪреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ:

PS [13] > $Matches PS [14] > $a="ass 123 saa" PS [15] > $a -match "\d+" True PS [16] > $Matches Name Value ---- ----- 0 123 

рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ! рдкреВрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
 ?   ,   : 
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)
? , :
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)
? , :
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)
? , :
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)
 ?   ,   : 
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)
? , :
PS [17] > $a -match "(?<Numbers>\d+)" True PS [18] > $Matches Name Value ---- ----- Numbers 123 0 123 PS [19] > $Matches.Numbers 123

( split!). , (, PowerShell ), .
, ?


, .
## Function LastSwitch { "IP : {0}, {1}" -f $IpSwitch,$Port If ($CiscoPhone) {" Cisco IP Phone"} Read-Host "Press Enter for continue..." break } ## For (;;) { $ip=Read-host "Enter ip" If ($ip -match "(\d{1,3}\.){3}\d{1,3}") {break} else {Write-Warning "Invalid IP address! Try again..."} } ## if ((test-connection $ip -quiet) -ne "True") { Write-Warning " !" Read-Host "Press Enter to continue..." break } $cred = get-credential Admin ## $IpSwitch = "10.138.30.1" ## $MAC = $null $CiscoPhone = $false For (;;) { $conn = Connect-ssh -Server $IpSwitch -Credential $cred -ShellPrompt "#" -Force Invoke-SSH -Connection $conn -Command "terminal length 0" | out-null Invoke-SSH -Connection $conn -Command "ping $ip" | out-null If (!$MAC) { ## ((Invoke-SSH -Connection $conn -Command "sh arp | i $ip ").text | Where-Object {$_ -match "\w"}) -match "(?<MAC>\w{4}\.\w{4}\.\w{4})" | out-null $MAC = $Matches.MAC } ## , (((Invoke-SSH -Connection $conn -Command "sh mac address-table address $MAC").Text | where-object {$_ -match $mac}) | Select-Object -First 1) -match "(?<port>((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})?)" | out-null $port = $Matches.Port ## $portInfo = (Invoke-SSH -Connection $conn -Command "show mac address-table interface $port").Text | where-object {$_ -match $port} If (($portInfo | measure).Count -eq 1) {LastSwitch} ## $DetailPortInfo = (Invoke-SSH -Connection $conn -Command "sh cdp neighbors $port detail" -Force).Text ## "Cisco IP phone", IP . If ($DetailPortInfo -match "Cisco IP phone") {$CiscoPhone = $true; LastSwitch} (($DetailPortInfo | where-object {$_ -match "IP address: (\d{1,3}\.){3}\d{1,3}"}) | Select-Object -First 1) -match "(?<ip>(\d{1,3}\.){3}\d{1,3})" | out-null "IP : {0}, {1}" -f $IpSwitch,$Port $IpSwitch = $Matches.IP Disconnect-SSH $conn }
:
Get-Credential. , , . 1 (.. ( PowerShell: get-help | more )). , .. Invoke-SSH , . , terminal length 0 ((\D{2}\d{1,3})/|Po)(\d{1,3})(/\d{1,3})? - , . : Fa5, Gi0/2, Te2/0/8, Po255 .. ( , , ) Cisco IP phone, , ( Invoke-SSH), (out-null)

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


All Articles