рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ 

рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░, рдХреЛрдгрддрд╛рд╣реА VMware рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпреЗрддреЛ. рд╣реЗ рд╕рд░реНрд╡ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдиреЗ рд╕реБрд░реВ рд╣реЛрддреЗ, рддреНрдпрд╛рдирдВрддрд░ рдкреЙрд╡рд░рд╢реЗрд▓ рдХрд┐рдВрд╡рд╛ рд╡реНрд╣реАрдПрдорд╡реЗрдЕрд░ рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рдпреЗрддреЗ.

рд╕рдордЬрд╛ рддреБрдореНрд╣реА ISE рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдереЛрдбреЗ рдкреБрдвреЗ PowerShell рдордзреНрдпреЗ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡рд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдореЙрдбреНрдпреВрд▓реНрд╕рдордзреАрд▓ рдорд╛рдирдХ cmdlets рд╡рд╛рдкрд░реВрди рдЬреЗ тАЬрдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЬрд╛рджреВрдореБрд│реЗтАЭ рдХрд╛рдо рдХрд░рддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдиреНрд╕ рд╢реЗрдХрдбреЛрдордзреНрдпреЗ рдореЛрдЬрдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛рд▓, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реЗ рдЖрдврд│реЗрд▓ рдХреА рд▓рд╣рд╛рди рд╕реНрдХреЗрд▓рд╡рд░ рдорджрдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рд╡рд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╣рд│реВ рдЪрд╛рд▓рддрд╛рдд. 

рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, 2 рд╕рд╛рдзрдиреЗ рдорджрдд рдХрд░рддреАрд▓:

  • рдкреЙрд╡рд░рд╢реЗрд▓ рд░рдирд╕реНрдкреЗрд╕реЗрд╕ - рдПрдХ рджреГрд╖реНрдЯреАрдХреЛрди рдЬреЛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрд╡рддрдВрддреНрд░ рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд▓рд╛ рд╕рдорд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ; 
  • рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВ - рдореВрд▓рднреВрдд PowerCLI рдлрдВрдХреНрд╢рди, Windows рдордзреАрд▓ Get-WMIObject рдЪреЗ рдЕреЕрдирд╛рд▓реЙрдЧ. рд╣реЗ cmdlet рдШрдЯрдХрд╛рдВрд╕реЛрдмрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рдЦреЗрдЪрдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╕рд╛рдзреНрдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╣ рд╕рд╛рдзреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдорд╛рд╣рд┐рддреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ. рдмрд░реНрдпрд╛рдЪ рдмрд╛рдмрддреАрдд рддреЗ рд╡реЗрдЧрд╛рдиреЗ рдмрд╛рд╣реЗрд░ рдпреЗрддреЗ.

рдкреБрдвреЗ, рдореА рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдзрдирд╛рдмрджреНрджрд▓ рдереЛрдбрдХреНрдпрд╛рдд рдмреЛрд▓реЗрди рдЖрдгрд┐ рд╡рд╛рдкрд░рд╛рдЪреА рдЙрджрд╛рд╣рд░рдгреЗ рджрд╛рдЦрд╡реЗрди. рдЪрд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВ рдЖрдгрд┐ рдПрдХ рджреБрд╕рд▒реНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХреЗрд╡реНрд╣рд╛ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╛рд╣реВ. рдЬрд╛!

рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ

рдкрд╣рд┐рд▓рд╛ рдЯрдкреНрдкрд╛: рд░рдирд╕реНрдкреЗрд╕

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

рддреБрдореНрд╣реА рдпреЗрдереЗ рд╢рд┐рдХрдгреЗ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддрд╛: 
рдкреЙрд╡рд░рд╢реЗрд▓ рд░рдирд╕реНрдкреЗрд╕реЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд╕реБрд░реВ рдХрд░рдгреЗ: рднрд╛рдЧ рез

рд░рдирд╕реНрдкреЗрд╕ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рдХрд╛рдп рдорд┐рд│рддреЗ:

  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЖрджреЗрд╢рд╛рдВрдЪреА рдпрд╛рджреА рдорд░реНрдпрд╛рджрд┐рдд рдХрд░реВрди рдЧрддреА,
  • рдХрд╛рд░реНрдпрд╛рдВрдЪреА рд╕рдорд╛рдВрддрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА,
  • рд╕реБрд░рдХреНрд╖рд╛

рд░рдирд╕реНрдкреЗрд╕ рдорджрдд рдХрд░рддреЗ рддреЗрд╡реНрд╣рд╛ рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░реАрд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ:

тАЬрд╕реНрдЯреЛрд░реЗрдЬ рд╡рд┐рд╡рд╛рдж рд╣реЗ vSphere рдордзреНрдпреЗ рдЯреНрд░реЕрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рдореЗрдЯреНрд░рд┐рдХреНрд╕рдкреИрдХреА рдПрдХ рдЖрд╣реЗ. vCenter рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдлрдХреНрдд рдЬрд╛рдКрди рдкрд╛рд╣реВ рд╢рдХрдд рдирд╛рд╣реА рдХреА рдХреЛрдгрддреЗ VM рдЕрдзрд┐рдХ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рдд рдЖрд╣реЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, рддреБрдореНрд╣реА рд╣рд╛ рдбреЗрдЯрд╛ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯрд╛рдВрдд рд╕рдВрдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддрд╛ PowerShell рд▓рд╛ рдзрдиреНрдпрд╡рд╛рдж.
рдореА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди рдЬреА VMware рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдирд╛ рд╕рдВрдкреВрд░реНрдг vCenter рдордзреНрдпреЗ рджреНрд░реБрддрдкрдгреЗ рд╢реЛрдзрдгреНрдпрд╛рд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд░рд╛рд╕рд░реА рд╡рд╛рдкрд░рд╛рд╡рд░реАрд▓ рдбреЗрдЯрд╛рд╕рд╣ VM рдЪреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓.  
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЙрд╡рд░рд╢реЗрд▓ рд░рдирд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЗ рдЬреНрдпрд╛рдореБрд│реЗ рдкреНрд░рддреНрдпреЗрдХ ESXi рд╣реЛрд╕реНрдЯрд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рдд:рдЪреНрдпрд╛ VM рдордзреВрди рд╡реЗрдЧрд│реНрдпрд╛ рд░рдирд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЙрдкрднреЛрдЧрд╛рдЪреА рдорд╛рд╣рд┐рддреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рдпреЗрддреЗ рдЖрдгрд┐ рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдЪреА рддреНрд╡рд░рд┐рдд рддрдХреНрд░рд╛рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдпрдЬрдорд╛рдирд╛рдВрджреНрд╡рд╛рд░реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреА рд╡рд┐рдирдВрддреА рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдРрд╡рдЬреА рдкреЙрд╡рд░рд╢реЗрд▓рд▓рд╛ рддреНрд╡рд░рд┐рдд рдЬреЙрдм рдмрдВрдж рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рд╕реНрддреНрд░реЛрдд: ESXi рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди I/O рдХрд╕реЗ рджрд╛рдЦрд╡рд╛рдпрдЪреЗ

рдЦрд╛рд▓реАрд▓ рдмрд╛рдмрддреАрдд, рд░рдирд╕реНрдкреЗрд╕ рдпрд╛рдкреБрдвреЗ рдЙрдкрдпреБрдХреНрдд рдирд╛рд╣реА:

тАЬрдореА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗ рдЬреА VM рд╡рд░реВрди рднрд░рдкреВрд░ рдбреЗрдЯрд╛ рдЧреЛрд│рд╛ рдХрд░рддреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рдирд╡реАрди рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рддреЗ. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рддреЗрдереЗ рдмрд░реЗрдЪ VM рдЖрд╣реЗрдд рдЖрдгрд┐ рдПрдХрд╛ рдорд╢реАрдирд╡рд░ 5-8 рд╕реЗрдХрдВрдж рдЦрд░реНрдЪ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.тАЭ 

рд╕реНрддреНрд░реЛрдд: RunspacePool рд╕рд╣ Multithreading PowerCLI

рдпреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ Get-View рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓, рдЪрд▓рд╛ рдкреБрдвреЗ рдЬрд╛рдК рдпрд╛. 

рджреБрд╕рд░рд╛ рдЯрдкреНрдкрд╛: рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВ

Get-View рдХрд╛ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, cmdlets рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. 

API рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХрд╛рдВрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рди рдХрд░рддрд╛ рдЖрдгрд┐ рдкреБрдвреАрд▓ рдЪрд╛рдХ рдкреБрдиреНрд╣рд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдареЗрд╡рддрд╛ рд╕реЛрдпреАрд╕реНрдХрд░рдкрдгреЗ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА Cmdlets рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рдЬреБрдиреНрдпрд╛ рджрд┐рд╡рд╕рд╛рдд рдХреЛрдбрдЪреНрдпрд╛ рд╢рдВрднрд░ рдХрд┐рдВрд╡рд╛ рджреЛрди рдУрд│реА рдХрд╛рдп рдШреНрдпрд╛рдпрдЪреНрдпрд╛, рдкреЙрд╡рд░рд╢реЗрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рдХрдорд╛рдВрдбрд╕рд╣ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдЖрдореНрд╣реА рдпрд╛ рд╕реЛрдпреАрд╕рд╛рдареА рд╡реЗрдЧрд╛рдиреЗ рдкреИрд╕реЗ рджреЗрддреЛ. рд╕реНрд╡рдд: cmdlets рдордзреНрдпреЗ рдХреЛрдгрддреАрд╣реА рдЬрд╛рджреВ рдирд╛рд╣реА: рд╕рдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкрд░рдВрддреБ рдХрдореА рд╕реНрддрд░рд╛рд╡рд░, рд╕рдиреА рднрд╛рд░рддрд╛рддреАрд▓ рдорд╛рд╕реНрдЯрд░рдЪреНрдпрд╛ рдХреБрд╢рд▓ рд╣рд╛рддрд╛рдВрдиреА рд▓рд┐рд╣рд┐рд▓реЗрд▓реА.

рдЖрддрд╛, Get-View рд╢реА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Get-VM cmdlet рдШреЗрдК: рддреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рдЖрдгрд┐ рдПрдХ рд╕рдВрдорд┐рд╢реНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рдд рдХрд░рддреЗ, рдореНрд╣рдгрдЬреЗрдЪ рддреЗ рдЗрддрд░ рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддреНрдпрд╛рд╕ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ: VMHost, Datastore рдЗ.  

рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВ рддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреА рдкрд░рдд рдЖрд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд╣реАрд╣реА рдЬреЛрдбрдд рдирд╛рд╣реА. рд╢рд┐рд╡рд╛рдп, рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреА рдорд╛рд╣рд┐рддреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рд╣реЗ рдХрд╛рдЯреЗрдХреЛрд░рдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЖрдЙрдЯрдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реБрд▓рдн рд╣реЛрдИрд▓. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрдГ рд╣рд╛рдпрдкрд░-рд╡реНрд╣реА рдордзреНрдпреЗ, Get-WMIObject cmdlet рдереЗрдЯ рдЕреЕрдирд╛рд▓реЙрдЧ рдЖрд╣реЗ - рдХрд▓реНрдкрдирд╛ рдЕрдЧрджреА рд╕рдорд╛рди рдЖрд╣реЗ.

рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВ рдкреЙрдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╡рд░реАрд▓ рд░реВрдЯреАрди рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЧреИрд░рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ. рдкрдг рд╣рдЬрд╛рд░реЛ рдЖрдгрд┐ рд╣рдЬрд╛рд░реЛ рд╡рд╕реНрддреВрдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рддрд░ рддреНрдпрд╛рд▓рд╛ рдХрд┐рдВрдордд рдирд╕рддреЗ.

рддреБрдореНрд╣реА VMware рдмреНрд▓реЙрдЧрд╡рд░ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛: рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВрдЪрд╛ рдкрд░рд┐рдЪрдп

рдЖрддрд╛ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗрд╕ рд╡рд╛рдкрд░реВрди рд╕рд░реНрд╡рдХрд╛рд╣реА рджрд╛рдЦрд╡рддреЛ. 

VM рдЕрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдд рдЖрд╣реЗ

рдПрдХреЗ рджрд┐рд╡рд╢реА рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдиреЗ рдорд▓рд╛ рддреНрдпрд╛рдЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ. рдХрд╛рд░реНрдп рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдирдЪрд░реНрдпрд╛ рдЖрд╣реЗ: рдбреБрдкреНрд▓рд┐рдХреЗрдЯ cloud.uuid рдкреЕрд░рд╛рдореАрдЯрд░рд╕рд╣ рд╕рд░реНрд╡ VM рд╢реЛрдзрд╛ (рд╣реЛрдп, vCloud рдбрд╛рдпрд░реЗрдХреНрдЯрд░рдордзреНрдпреЗ VM рдХреНрд▓реЛрди рдХрд░рддрд╛рдирд╛ рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ). 

рдордирд╛рдд рдпреЗрдгрд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрд╛рдп рдЖрд╣реЗ:

  1. рд╕рд░реНрд╡ VM рдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛.
  2. рдпрд╛рджреА рдХрд╢реАрддрд░реА рдкрд╛рд░реНрд╕ рдХрд░рд╛.

рдореВрд│ рдЖрд╡реГрддреНрддреА рд╣реА рд╕рд╛рдзреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА:

function Get-CloudUUID1 {
   # ╨Я╨╛╨╗╤Г╤З╨░╨╡╨╝ ╤Б╨┐╨╕╤Б╨╛╨║ ╨▓╤Б╨╡╤Е ╨Т╨Ь
   $vms = Get-VM
   $report = @()

   # ╨Ю╨▒╤А╨░╨▒╨░╤В╤Л╨▓╨░╨╡╨╝ ╨║╨░╨╢╨┤╤Л╨╣ ╨╛╨▒╤К╨╡╨║╤В, ╨┐╨╛╨╗╤Г╤З╨░╤П ╨╕╨╖ ╨╜╨╡╨│╨╛ ╤В╨╛╨╗╤М╨║╨╛ 2 ╤Б╨▓╨╛╨╣╤Б╤В╨▓╨░: ╨Ш╨╝╤П ╨Т╨Ь ╨╕ Cloud UUID.
   # ╨Ч╨░╨╜╨╛╤Б╨╕╨╝ ╨┤╨░╨╜╨╜╤Л╨╡ ╨▓ ╨╜╨╛╨▓╤Л╨╣ PS-╨╛╨▒╤К╨╡╨║╤В ╤Б ╨┐╨╛╨╗╤П╨╝╨╕ VM ╨╕ UUID
   foreach ($vm in $vms)
   {
       $table = "" | select VM,UUID

       $table.VM = $vm.name
       $table.UUID = ($vm | Get-AdvancedSetting -Name cloud.uuid).Value
          
       $report += $table
   }
# ╨Т╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╨╝ ╨▓╤Б╨╡ ╨╛╨▒╤К╨╡╨║╤В╤Л
   $report
}
# ╨Ф╨░╨╗╨╡╨╡ ╨а╨г╨Ъ╨Р╨Ь╨Ш ╨┐╨░╤А╤Б╨╕╨╝ ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╜╤Л╨╣ ╤А╨╡╨╖╤Г╨╗╤М╤В╨░╤В

рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЕрддреНрдпрдВрдд рд╕реЛрдкреЗ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ. рдХреЙрдлреА рдмреНрд░реЗрдХ рдШреЗрдКрди рдПрдХ-рджреЛрди рдорд┐рдирд┐рдЯрд╛рдВрдд рд▓рд┐рд╣рд┐рддрд╛ рдпреЗрдИрд▓. рдЧрд╛рд│рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд┐рдВрд╡рд╛ рдкрдзреНрджрддреАрд╡рд░ рд╕реНрдХреНрд░реВ рдХрд░рд╛ рдЖрдгрд┐ рддреЗ рдкреВрд░реНрдг рдЭрд╛рд▓реЗ.

рдкрдг рд╡реЗрд│ рдореЛрдЬреВрдпрд╛:

рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ

рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ

2 рдорд┐рдирд┐рдЯреЗ 47 рд╕реЗрдХрдВрдж рдЬрд╡рд│рдЬрд╡рд│ 10k VM рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛. рдмреЛрдирд╕ рдореНрд╣рдгрдЬреЗ рдлрд┐рд▓реНрдЯрд░рдЪреА рдЕрдиреБрдкрд╕реНрдерд┐рддреА рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд╣рд╕реНрддреЗ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ. рдЕрд░реНрдерд╛рдд, рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд╛ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ vCenter рдХрдбреВрди рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╣реЛрд╕реНрдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рдЕрд╕рддрд╛рдд рдХрд┐рдВрд╡рд╛ рд╣рдЬрд╛рд░реЛ рд╡рд╕реНрддреВрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рд░рдирд╕реНрдкреЗрд╕реЗрд╕ рдкреНрд░рдердо рдмрдЪрд╛рд╡рд╛рд╕рд╛рдареА рдпреЗрддрд╛рдд. рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди рдХрд╛рдп рдорд┐рд│рддреЗ рддреЗ рдкрд╛рд╣реВрдпрд╛.

рдкрд╣рд┐рд▓рд╛ рд╡реЗрдЧ рдЪрд╛рд▓реВ рдХрд░рд╛: рдкреЙрд╡рд░рд╢реЗрд▓ рд░рдирд╕реНрдкреЗрд╕реЗрд╕

рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд▓рдХреНрд╖рд╛рдд рдпреЗрдгрд╛рд░реА рдкрд╣рд┐рд▓реА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рд▓реВрдк рдХреНрд░рдорд╛рдХреНрд░рдорд╛рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреЗ, рдкрд░рдВрддреБ рд╕рдорд╛рдВрддрд░ рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ, рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рдПрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдЧреЛрд│рд╛ рдХрд░рдгреЗ рдЖрдгрд┐ рддреЗ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдгреЗ. 

рдкрдг рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ: PowerCLI рдЖрдореНрд╣рд╛рд▓рд╛ vCenter рд╡рд░ рдЕрдиреЗрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рддреНрд░реЗ рдЙрдШрдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рдПрдХ рдордЬреЗрджрд╛рд░ рддреНрд░реБрдЯреА рдЯрд╛рдХреЗрд▓:

You have modified the global:DefaultVIServer and global:DefaultVIServers system variables. This is not allowed. Please reset them to $null and reconnect to the vSphere server.

рдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдкреНрд░рдердо рдкреНрд░рд╡рд╛рд╣рд╛рдд рд╕рддреНрд░ рдорд╛рд╣рд┐рддреА рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдкрдг рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛ рдХреА рдкреЙрд╡рд░рд╢реЗрд▓ рдЕрд╢рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЬреЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдореНрд╣рдгреВрди рдлрдВрдХреНрд╢рди рдХрд┐рдВрд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдмреНрд▓реЙрдХрдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЪрд▓рд╛ $global:DefaultVIServers (-NotDefault рдХреА рд╕рд╣ рдХрдиреЗрдХреНрдЯ-VIServer) рдмрд╛рдпрдкрд╛рд╕ рдХрд░реВрди, рдЕрд╢рд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рд╕рддреНрд░ рдкрд╛рд╕ рдХрд░реВрдпрд╛:

$ConnectionString = @()
foreach ($vCenter in $vCenters)
   {
       try {
           $ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -AllLinked -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
       }
       catch {
           if ($er.Message -like "*not part of a linked mode*")
           {
               try {
                   $ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
               }
               catch {
                   throw $_
               }
              
           }
           else {
               throw $_
           }
       }
   }

рдЖрддрд╛ Runspace Pools рджреНрд╡рд╛рд░реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реВ.  

рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ:

  1. рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ VM рдЪреА рдпрд╛рджреА рдорд┐рд│рддреЗ.
  2. рд╕рдорд╛рдВрддрд░ рдкреНрд░рд╡рд╛рд╣рд╛рдд рдЖрдкрд▓реНрдпрд╛рд▓рд╛ cloud.uuid рдорд┐рд│рддреЗ.
  3. рдЖрдореНрд╣реА рдПрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдкреНрд░рд╡рд╛рд╣рд╛рдВрдордзреВрди рдбреЗрдЯрд╛ рдЧреЛрд│рд╛ рдХрд░рддреЛ.
  4. рдЖрдореНрд╣реА рдХреНрд▓рд╛рдЙрдбрдпреВрдпреВрдЖрдпрдбреА рдлреАрд▓реНрдбрдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреЗ рдЧрдЯрдмрджреНрдз рдХрд░реВрди рдлрд┐рд▓реНрдЯрд░ рдХрд░рддреЛ: рдЬрд┐рдереЗ рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ 1 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ рддреЗ рдЖрдореНрд╣реА рд╢реЛрдзрдд рдЕрд╕рд▓реЗрд▓реЗ рд╡реНрд╣реАрдПрдо рдЖрд╣реЗрдд.

рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд│рддреЗ:


function Get-VMCloudUUID {
   param (
       [string[]]
       [ValidateNotNullOrEmpty()]
       $vCenters = @(),
       [int]$MaxThreads,
       [System.Management.Automation.PSCredential]
       [System.Management.Automation.Credential()]
       $Credential
   )

   $ConnectionString = @()

   # ╨б╨╛╨╖╨┤╨░╨╡╨╝ ╨╛╨▒╤К╨╡╨║╤В ╤Б ╤Б╨╡╤Б╤Б╨╕╨╛╨╜╨╜╤Л╨╝ ╨║╨╗╤О╤З╨╛╨╝
   foreach ($vCenter in $vCenters)
   {
       try {
           $ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -AllLinked -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
       }
       catch {
           if ($er.Message -like "*not part of a linked mode*")
           {
               try {
                   $ConnectionString += Connect-VIServer -Server $vCenter -Credential $Credential -NotDefault -Force -ErrorAction stop -WarningAction SilentlyContinue -ErrorVariable er
               }
               catch {
                   throw $_
               }
              
           }
           else {
               throw $_
           }
       }
   }

   # ╨Я╨╛╨╗╤Г╤З╨░╨╡╨╝ ╤Б╨┐╨╕╤Б╨╛╨║ ╨▓╤Б╨╡╤Е ╨Т╨Ь
   $Global:AllVMs = Get-VM -Server $ConnectionString

   # ╨Я╨╛╨╡╤Е╨░╨╗╨╕!
   $ISS = [system.management.automation.runspaces.initialsessionstate]::CreateDefault()
   $RunspacePool = [runspacefactory]::CreateRunspacePool(1, $MaxThreads, $ISS, $Host)
   $RunspacePool.ApartmentState = "MTA"
   $RunspacePool.Open()
   $Jobs = @()

# ScriptBlock ╤Б ╨╝╨░╨│╨╕╨╡╨╣!)))
# ╨Ш╨╝╨╡╨╜╨╜╨╛ ╨╛╨╜ ╨▒╤Г╨┤╨╡╤В ╨▓╤Л╨┐╨╛╨╗╨╜╤П╤В╤М╤Б╤П ╨▓ ╨┐╨╛╤В╨╛╨║╨╡
   $scriptblock = {
       Param (
       $ConnectionString,
       $VM
       )

       $Data = $VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}

       return $Data
   }
# ╨У╨╡╨╜╨╡╤А╨╕╤А╤Г╨╡╨╝ ╨┐╨╛╤В╨╛╨║╨╕

   foreach($VM in $AllVMs)
   {
       $PowershellThread = [PowerShell]::Create()
# ╨Ф╨╛╨▒╨░╨▓╨╗╤П╨╡╨╝ ╤Б╨║╤А╨╕╨┐╤В
       $null = $PowershellThread.AddScript($scriptblock)
# ╨Ш ╨╛╨▒╤К╨╡╨║╤В╤Л, ╨║╨╛╤В╨╛╤А╤Л╨╡ ╨┐╨╡╤А╨╡╨┤╨░╨┤╨╕╨╝ ╨▓ ╨║╨░╤З╨╡╤Б╤В╨▓╨╡ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╨╛╨▓ ╤Б╨║╤А╨╕╨┐╤В╤Г
       $null = $PowershellThread.AddArgument($ConnectionString)
       $null = $PowershellThread.AddArgument($VM)
       $PowershellThread.RunspacePool = $RunspacePool
       $Handle = $PowershellThread.BeginInvoke()
       $Job = "" | Select-Object Handle, Thread, object
       $Job.Handle = $Handle
       $Job.Thread = $PowershellThread
       $Job.Object = $VM.ToString()
       $Jobs += $Job
   }

# ╨б╤В╨░╨▓╨╕╨╝ ╨│╤А╨░╨┤╤Г╤Б╨╜╨╕╨║, ╤З╤В╨╛╨▒╤Л ╨╜╨░╨│╨╗╤П╨┤╨╜╨╛ ╨╛╤В╤Б╨╗╨╡╨╢╨╕╨▓╨░╤В╤М ╨▓╤Л╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╡ ╨╖╨░╨┤╨░╨╜╨╕╨╣
# ╨Ш ╨╖╨┤╨╡╤Б╤М ╨╢╨╡ ╨┐╤А╨╕╨▒╨╕╨▓╨░╨╡╨╝ ╨╛╤В╤А╨░╨▒╨╛╤В╨░╨▓╤И╨╕╨╡ ╨╖╨░╨┤╨░╨╜╨╕╤П
   While (@($Jobs | Where-Object {$_.Handle -ne $Null}).count -gt 0)
   {
       $Remaining = "$($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False}).object)"

       If ($Remaining.Length -gt 60) {
           $Remaining = $Remaining.Substring(0,60) + "..."
       }

       Write-Progress -Activity "Waiting for Jobs - $($MaxThreads - $($RunspacePool.GetAvailableRunspaces())) of $MaxThreads threads running" -PercentComplete (($Jobs.count - $($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False}).count)) / $Jobs.Count * 100) -Status "$(@($($Jobs | Where-Object {$_.Handle.IsCompleted -eq $False})).count) remaining - $remaining"

       ForEach ($Job in $($Jobs | Where-Object {$_.Handle.IsCompleted -eq $True})){
           $Job.Thread.EndInvoke($Job.Handle)     
           $Job.Thread.Dispose()
           $Job.Thread = $Null
           $Job.Handle = $Null
       }
   }

   $RunspacePool.Close() | Out-Null
   $RunspacePool.Dispose() | Out-Null
}


function Get-CloudUUID2
{
   [CmdletBinding()]
   param(
   [string[]]
   [ValidateNotNullOrEmpty()]
   $vCenters = @(),
   [int]$MaxThreads = 50,
   [System.Management.Automation.PSCredential]
   [System.Management.Automation.Credential()]
   $Credential)

   if(!$Credential)
   {
       $Credential = Get-Credential -Message "Please enter vCenter credentials."
   }

   # ╨Т╤Л╨╖╨╛╨▓ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ Get-VMCloudUUID, ╨│╨┤╨╡ ╨╝╤Л ╤А╨░╤Б╨┐╨░╤А╨░╨╗╨╗╨╡╨╗╨╕╨▓╨░╨╡╨╝ ╨╛╨┐╨╡╤А╨░╤Ж╨╕╤О
   $AllCloudVMs = Get-VMCloudUUID -vCenters $vCenters -MaxThreads $MaxThreads -Credential $Credential
   $Result = $AllCloudVMs | Sort-Object Value | Group-Object -Property CloudUUID | Where-Object -FilterScript {$_.Count -gt 1} | Select-Object -ExpandProperty Group
   $Result
}

рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреЗ рд╕реМрдВрджрд░реНрдп рд╣реЗ рдЖрд╣реЗ рдХреА рддреЗ рдЗрддрд░ рд╕рдорд╛рди рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдмреНрд▓реЙрдХ рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓реВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗ рдкреНрд░рд╡рд╛рд╣рд╛рдд рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓. рддреНрдпрд╛рдЪреЗ рд╢реЛрд╖рдг рдХрд░рд╛!

рдЖрдореНрд╣реА рд╡реЗрд│ рдореЛрдЬрддреЛ:

рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ

55 рд╕реЗрдХрдВрдж. рд╣реЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рдЬрд▓рдж рдЕрд╕реВ рд╢рдХрддреЗ. 

рдЪрд▓рд╛ рджреБрд╕рд▒реНрдпрд╛ рдЧрддреАрдХрдбреЗ рдЬрд╛рдК: GetView

рдХрд╛рдп рдЪреВрдХ рдЖрд╣реЗ рддреЗ рд╢реЛрдзреВрдпрд╛.
рд╕рд░реНрд╡рдкреНрд░рдердо, Get-VM cmdlet рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рдШреЗрддреЗ.
рджреБрд╕рд░реЗ, Get-AdvancedOptions cmdlet рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрдЦреА рдЬрд╛рд╕реНрдд рд╡реЗрд│ рд▓рд╛рдЧрддреЛ.
рдкреНрд░рдердо рджреБрд╕рд▒реНрдпрд╛рд╢реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реВрдпрд╛. 

Get-AdvancedOptions рд╡реИрдпрдХреНрддрд┐рдХ VM рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╕рд╛рдареА рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдмрд░реНтАНрдпрд╛рдЪ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рдЦреВрдк рдЕрдирд╛рдбрд╝реА рдЖрд╣реЗ. рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдСрдмреНрдЬреЗрдХреНрдЯрд╡рд░реВрди (рдЧреЗрдЯ-рд╡реНрд╣реАрдПрдо) рд╣реАрдЪ рдорд╛рд╣рд┐рддреА рдЖрдкрдг рдорд┐рд│рд╡реВ рд╢рдХрддреЛ. рд╣реЗ рдлрдХреНрдд ExtensionData рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдЪрд╛рдВрдЧрд▓реЗ рджрдлрди рдХреЗрд▓реЗ рдЖрд╣реЗ. рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧрд╕рд╣ рд╕рд╢рд╕реНрддреНрд░, рдЖрдореНрд╣реА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕ рдЧрддреА рджреЗрддреЛ.

рд╣рд╛рддрд╛рдЪреНрдпрд╛ рдХрд┐рдВрдЪрд┐рдд рд╣рд╛рд▓рдЪрд╛рд▓реАрд╕рд╣ рд╣реЗ рдЖрд╣реЗ:


VM | Get-AdvancedSetting -Name Cloud.uuid -Server $ConnectionString | Select-Object @{N="VMName";E={$_.Entity.Name}},@{N="CloudUUID";E={$_.Value}},@{N="PowerState";E={$_.Entity.PowerState}}

рдпрд╛рдд рд╡рд│рддреЗ:


$VM | Where-Object {($_.ExtensionData.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value -ne $null} | Select-Object @{N="VMName";E={$_.Name}},@{N="CloudUUID";E={($_.ExtensionData.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value}},@{N="PowerState";E={$_.summary.runtime.powerstate}}

рдЖрдЙрдЯрдкреБрдЯ Get-AdvancedOptions рд╕рд╛рд░рдЦреЗрдЪ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреЗ рдЕрдиреЗрдХ рд╡реЗрд│рд╛ рдЬрд▓рдж рдХрд╛рд░реНрдп рдХрд░рддреЗ. 

рдЖрддрд╛ Get-VM рд╡рд░. рд╣реЗ рд╡реЗрдЧрд╡рд╛рди рдирд╛рд╣реА рдХрд╛рд░рдг рддреЗ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреВрдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди рдЙрджреНрднрд╡рддреЛ: рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреА рдЖрдгрд┐ рд░рд╛рдХреНрд╖рд╕реА рдкреАрдПрд╕рдУ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ, рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдХреНрдд рд╡реНрд╣реАрдПрдордЪреЗ рдирд╛рд╡, рддреНрдпрд╛рдЪреА рд╕реНрдерд┐рддреА рдЖрдгрд┐ рдЕрд╡рдШрдб рдЧреБрдгрдзрд░реНрдорд╛рдЪреЗ рдореВрд▓реНрдп рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ?  

рд╢рд┐рд╡рд╛рдп, Get-AdvancedOptions рдЪреНрдпрд╛ рд╕реНрд╡рд░реБрдкрд╛рддреАрд▓ рдЕрдбрдерд│рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди рджреВрд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ. рд░рдирд╕реНрдкреЗрд╕ рдкреВрд▓реНрд╕ рд╡рд╛рдкрд░рдгреЗ рдЖрддрд╛ рдУрд╡реНрд╣рд░рдХрд┐рд▓рд╕рд╛рд░рдЦреЗ рджрд┐рд╕рддреЗ рдХрд╛рд░рдг рд╕реЗрд╢рди рд╕реЛрдкрд╡рддрд╛рдирд╛ рд╕реНрдХреНрд╡реЕрдЯ рдереНрд░реЗрдбреНрд╕рд╡рд░ рдзреАрдореЗ рдХрд╛рд░реНрдп рд╕рдорд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рд╕рд╛рдзрди рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдирд╛рд╣реА. 

рдЪрд▓рд╛ ExtensionData рдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд╣реВ: рддреЗ рдЧреЗрдЯ-рд╡реНрд╣реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯрдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рдХрд╛рд╣реА рдирд╛рд╣реА. 

рдЪрд▓рд╛ рдкреЙрд╡рд░рд╢реЗрд▓ рдорд╛рд╕реНрдЯрд░реНрд╕рдЪреНрдпрд╛ рдкреНрд░рд╛рдЪреАрди рддрдВрддреНрд░рд╛рд╡рд░ рдХреЙрд▓ рдХрд░реВрдпрд╛: рдлрд┐рд▓реНрдЯрд░, рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЖрдгрд┐ рдЧреНрд░реБрдкрд┐рдВрдЧ рд╡рд╛рдкрд░реВрди рдПрдХ рдУрд│. рдорд╛рдЧреАрд▓ рд╕рд░реНрд╡ рднрдпрдкрдЯ рд╕реБрд░реЗрдЦрдкрдгреЗ рдПрдХрд╛ рдУрд│реАрдд рдХреЛрд╕рд│рд▓реЗ рдЖрдгрд┐ рдПрдХрд╛ рд╕рддреНрд░рд╛рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ:


$AllVMs = Get-View -viewtype VirtualMachine -Property Name,Config.ExtraConfig,summary.runtime.powerstate | Where-Object {($_.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value -ne $null} | Select-Object @{N="VMName";E={$_.Name}},@{N="CloudUUID";E={($_.Config.ExtraConfig | Where-Object {$_.key -eq "cloud.uuid"}).Value}},@{N="PowerState";E={$_.summary.runtime.powerstate}} | Sort-Object CloudUUID | Group-Object -Property CloudUUID | Where-Object -FilterScript {$_.Count -gt 1} | Select-Object -ExpandProperty Group

рдЖрдореНрд╣реА рд╡реЗрд│ рдореЛрдЬрддреЛ:

рдкреЙрд╡рд░рд╕реАрдПрд▓рдЖрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ

9 рд╕реЗрдХрдВрдж рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддреАрдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧрд╕рд╣ рдЬрд╡рд│рдЬрд╡рд│ 10k рд╡рд╕реНрддреВрдВрд╕рд╛рдареА. рдЫрд╛рди!

рддреНрдпрд╛рдРрд╡рдЬреА рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖

рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдо рдереЗрдЯ рд╕рд╛рдзрдирд╛рдЪреНрдпрд╛ рдирд┐рд╡рдбреАрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЛ. рддреЗ рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирдХреНрдХреА рдХрд╛рдп рдирд┐рд╡рдбрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рд╣реЗ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рд╕рд╛рдВрдЧрдгреЗ рдЕрдиреЗрдХрджрд╛ рдХрдареАрдг рдЕрд╕рддреЗ. рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪрд╛ рд╡реЗрдЧ рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреАрдВрдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХ рддреНрдпрд╛рдЪреНрдпрд╛ рд▓рд╛рдЧреВ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рдорд░реНрдпрд╛рджреЗрдд рдЪрд╛рдВрдЧрд▓реА рдЖрд╣реЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рддреБрдордЪреНрдпрд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдЯреЛрдореЗрд╢рди рдЖрдгрд┐ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдЪреНрдпрд╛ рдХрдареАрдг рдХрд╛рд░реНрдпрд╛рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░реЗрд▓.

рдкреБрдирд╢реНрдЪ: рд▓реЗрдЦ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдЖрдгрд┐ рдкрд╛рдардмрд│ рджрд┐рд▓реНрдпрд╛рдмрджреНрджрд▓ рд▓реЗрдЦрдХ рд╕рд░реНрд╡ рд╕рдореБрджрд╛рдп рд╕рджрд╕реНрдпрд╛рдВрдЪреЗ рдЖрднрд╛рд░ рдорд╛рдирддреЛ. рдЕрдЧрджреА рдкрдВрдЬреЗ рдЕрд╕рд▓реЗрд▓реЗ. рдЖрдгрд┐ рдЬреНрдпрд╛рдВрдирд╛ рдкрд╛рдп рдирд╛рд╣реАрдд рддреЗ рджреЗрдЦреАрд▓ рдмреЛрдЖ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░рд╕рд╛рд░рдЦреЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛