рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░, рдХреЛрдгрддрд╛рд╣реА 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 рдХреНрд▓реЛрди рдХрд░рддрд╛рдирд╛ рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ).
рдордирд╛рдд рдпреЗрдгрд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрд╛рдп рдЖрд╣реЗ:
- рд╕рд░реНрд╡ VM рдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛.
- рдпрд╛рджреА рдХрд╢реАрддрд░реА рдкрд╛рд░реНрд╕ рдХрд░рд╛.
рдореВрд│ рдЖрд╡реГрддреНрддреА рд╣реА рд╕рд╛рдзреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА:
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 рджреНрд╡рд╛рд░реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реВ.
рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ:
- рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ VM рдЪреА рдпрд╛рджреА рдорд┐рд│рддреЗ.
- рд╕рдорд╛рдВрддрд░ рдкреНрд░рд╡рд╛рд╣рд╛рдд рдЖрдкрд▓реНрдпрд╛рд▓рд╛ cloud.uuid рдорд┐рд│рддреЗ.
- рдЖрдореНрд╣реА рдПрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдкреНрд░рд╡рд╛рд╣рд╛рдВрдордзреВрди рдбреЗрдЯрд╛ рдЧреЛрд│рд╛ рдХрд░рддреЛ.
- рдЖрдореНрд╣реА рдХреНрд▓рд╛рдЙрдбрдпреВрдпреВрдЖрдпрдбреА рдлреАрд▓реНрдбрдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреЗ рдЧрдЯрдмрджреНрдз рдХрд░реВрди рдлрд┐рд▓реНрдЯрд░ рдХрд░рддреЛ: рдЬрд┐рдереЗ рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ 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