PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ 

рджреЗрд░-рд╕рдмреЗрд░, рдХреЛрдИ рднреА VMware рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдпрд╛ рд╡реАрдПрдорд╡реЗрдпрд░ рдкрд╛рд╡рд░рд╕реАрдПрд▓рдЖрдИ рдЖрддрд╛ рд╣реИред

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

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, 2 рдЙрдкрдХрд░рдг рдорджрдж рдХрд░реЗрдВрдЧреЗ:

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

рдЖрдЧреЗ, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдЖрдЗрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХрдм рдХреЛрдИ рджреВрд╕рд░реЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрд╛рдирд╛!

PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

рдкрд╣рд▓рд╛ рдЪрд░рдг: рд░рдирд╕реНрдкреЗрд╕

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

рдЖрдк рдпрд╣рд╛рдВ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: 
рдкреЙрд╡рд░рд╢реЗрд▓ рд░рдирд╕реНрдкреЗрд╕ рдХрд╛ рдЖрд░рдВрднрд┐рдХ рдЙрдкрдпреЛрдЧ: рднрд╛рдЧ 1

рд░рдирд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

  • рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ рдЧрддрд┐,
  • рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди,
  • рд╕реБрд░рдХреНрд╖рд╛ред

рдпрд╣рд╛рдВ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рд░рдирд╕реНрдкреЗрд╕ рдорджрдж рдХрд░рддрд╛ рд╣реИ:

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

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

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рдирд╕реНрдкреЗрд╕ рдЕрдм рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ:

тАЬрдореИрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рд╡реАрдПрдо рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдирдпрд╛ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреА рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реАрдПрдо рд╣реИрдВ, рдФрд░ рдПрдХ рдорд╢реАрди рдкрд░ 5-8 рд╕реЗрдХрдВрдб рдЦрд░реНрдЪ рд╣реЛрддреЗ рд╣реИрдВред 

рд╕реНрд░реЛрдд: рд░рдирд╕реНрдкреЗрд╕рдкреВрд▓ рдХреЗ рд╕рд╛рде рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкрд╛рд╡рд░рд╕реАрдПрд▓рдЖрдИ

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ Get-View рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЪрд▓рд┐рдП рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред 

рджреВрд╕рд░рд╛ рдЪрд░рдг: рдЧреЗрдЯ-рд╡реНрдпреВ

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЧреЗрдЯ-рд╡реНрдпреВ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реАрдПрдордбреАрд▓реЗрдЯ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред 

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

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

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

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

рдЖрдк VMware рдмреНрд▓реЙрдЧ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: рдЧреЗрдЯ-рд╡реНрдпреВ рдХрд╛ рдкрд░рд┐рдЪрдп

рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред 

VM рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛

рдПрдХ рджрд┐рди рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдореБрдЭрд╕реЗ рдЙрд╕рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдХрд╛рд░реНрдп рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдирдЪрд░реНрдпрд╛ рд╣реИ: рд╕рднреА VM рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреНрд▓рд╛рдЙрдб.uuid рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдвреВрдВрдвреЗрдВ (рд╣рд╛рдВ, vCloud рдирд┐рджреЗрд╢рдХ рдореЗрдВ VM рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдВрднрд╡ рд╣реИ)ред 

рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдорди рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ:

  1. рд╕рднреА рд╡реАрдПрдо рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  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
}
# ╨Ф╨░╨╗╨╡╨╡ ╨а╨г╨Ъ╨Р╨Ь╨Ш ╨┐╨░╤А╤Б╨╕╨╝ ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╜╤Л╨╣ ╤А╨╡╨╖╤Г╨╗╤М╤В╨░╤В

рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ. рдЗрд╕реЗ рдХреЙрдлрд╝реА рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╕реНрдкрдВрджрди рдкрд░ рдкреЗрдВрдЪ рдФрд░ рдпрд╣ рд╣реЛ рдЧрдпрд╛ред

рд▓реЗрдХрд┐рди рдЖрдЗрдП рд╕рдордп рдорд╛рдкреЗрдВ:

PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

2 рдорд┐рдирдЯ 47 рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 10k VMs рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордпред рдПрдХ рдмреЛрдирд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрдм рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рде 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 $_
           }
       }
   }

рдЖрдЗрдП рдЕрдм рд░рдирд╕реНрдкреЗрд╕ рдкреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реЗрдВред  

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рд╣рдореЗрдВ рд╕рднреА рд╡реАрдПрдо рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред
  2. рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╣рдореЗрдВ Cloud.uuid рдорд┐рд▓рддрд╛ рд╣реИред
  3. рд╣рдо рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред
  4. рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ CloudUUID рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ: рдЬрд╣рд╛рдВ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 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
}

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЦреВрдмреА рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд╕рдорд╛рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдмреНрд▓реЙрдХ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╢реЛрд╖рдг рдХрд░реЛ!

рд╣рдо рд╕рдордп рдорд╛рдкрддреЗ рд╣реИрдВ:

PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

55 рд╕реЗрдХрдВрдбред рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рднреА рддреЗрдЬрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред 

рдЪрд▓рд┐рдП рджреВрд╕рд░реА рдЧрддрд┐ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ: GetView

рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИ.
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, Get-VM cmdlet рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рджреВрд╕рд░рд╛, Get-AdvancedOptions cmdlet рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдЖрдЗрдП рдкрд╣рд▓реЗ рджреВрд╕рд░реЗ рд╕реЗ рдирд┐рдкрдЯреЗрдВред 

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

рд╣рд╛рде рдХреА рд╣рд▓реНрдХреА рд╕реА рд╣рд░рдХрдд рд╕реЗ рдпрд╣ рд╣реЛрддрд╛ рд╣реИ:


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 рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдирд┐рдкрдЯрддрд╛ рд╣реИред рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рдкреАрдПрд╕рдУрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЬрдм рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡реАрдПрдо рдХрд╛ рдирд╛рдо, рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?  

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

рдЖрдЗрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рдирдбреЗрдЯрд╛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦреЗрдВ: рдпрд╣ рдЧреЗрдЯ-рд╡реНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред 

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


$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

рд╣рдо рд╕рдордп рдорд╛рдкрддреЗ рд╣реИрдВ:

PowerCLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реЙрдХреЗрдЯ рдмреВрд╕реНрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

9 рд╕реЗрдХрдВрдб рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 10k рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдПред рдорд╣рд╛рди!

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреА

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

рдкреБрдирд╢реНрдЪ: рд▓реЗрдЦрдХ рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЗ рд╕рднреА рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реИред рдкрдВрдЬреЗ рд╡рд╛рд▓реЗ рднреА. рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд┐рдирдХреЗ рдкреИрд░ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рднреА рдмреЛрдЖ рдХрдВрд╕реНрдЯреНрд░рд┐рдХреНрдЯрд░ рдХреА рддрд░рд╣ рд╣реИрдВред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ