PowerCLI เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชฐเซ‹เช•เซ‡เชŸ เชฌเซ‚เชธเซเชŸเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚ 

เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€เชฅเซ€, เช•เซ‹เชˆเชชเชฃ VMware เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชจเชฟเชฏเชฎเชฟเชค เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡ เชฌเชงเซเช‚ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เชชเช›เซ€ เชชเชพเชตเชฐเชถเซ‡เชฒ เช…เชฅเชตเชพ VMware PowerCLI เช†เชตเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเซ‡ ISE เชถเชฐเซ‚ เช•เชฐเชตเชพ เช…เชจเซ‡ "เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชœเชพเชฆเซ" เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เชพเชฎ เช•เชฐเชคเชพ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค cmdletsเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพเช‚ เชฅเซ‹เชกเซ€ เชตเชงเซ เช†เช—เชณ เชชเชพเชตเชฐเชถเซ‡เชฒเชฎเชพเช‚ เชจเชฟเชชเซเชฃเชคเชพ เชฎเซ‡เชณเชตเซ€ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ‡ เชธเซ‡เช‚เช•เชกเซ‹เชฎเชพเช‚ เช—เชฃเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชถเซ‹, เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ เชจเชพเชจเชพ เชธเซเช•เซ‡เชฒ เชชเชฐ เชฎเชฆเชฆ เช•เชฐเชคเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฎเซ‹เชŸเชพ เชชเชพเชฏเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชงเซ€เชฎเซ€ เชšเชพเชฒเซ‡ เช›เซ‡. 

เช† เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, 2 เชธเชพเชงเชจเซ‹ เชฎเชฆเชฆ เช•เชฐเชถเซ‡:

  • เชชเชพเชตเชฐเชถเซ‡เชฒ เชฐเชจเชธเซเชชเซ‡เชธ - เชเช• เช…เชญเชฟเช—เชฎ เชœเซ‡ เชคเชฎเชจเซ‡ เช…เชฒเช— เชฅเซเชฐเซ‡เชกเซ‹เชฎเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเชพ เช…เชฎเชฒเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชฌเชจเชพเชตเชตเชพ เชฆเซ‡ เช›เซ‡; 
  • เช—เซ‡เชŸ-เชตเซเชฏเซ‚ - เชฎเซ‚เชณเชญเซ‚เชค PowerCLI เชซเช‚เช•เซเชถเชจ, Windows เชฎเชพเช‚ Get-WMIObject เชจเซเช‚ เชเชจเชพเชฒเซ‹เช—. เช† cmdlet เชเช•เชฎเซ‹เชจเซ€ เชธเชพเชฅเซ‡เชจเซ€ เชตเชธเซเชคเซเช“เชจเซ‡ เช–เซ‡เช‚เชšเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเชพเชฆเชพ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเชพเชฆเชพ เช“เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. เช˜เชฃเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชคเซ‡ เชเชกเชชเชฅเซ€ เชฌเชนเชพเชฐ เช†เชตเซ‡ เช›เซ‡.

เช†เช—เชณ, เชนเซเช‚ เชฆเชฐเซ‡เช• เชŸเซ‚เชฒ เชตเชฟเชถเซ‡ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชตเชพเชค เช•เชฐเซ€เชถ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชจเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฌเชคเชพเชตเซ€เชถ. เชšเชพเชฒเซ‹ เชšเซ‹เช•เซเช•เชธ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช…เชจเซ‡ เชœเซ‹เชˆเช เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชเช• เชฌเซ€เชœเซ€ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชœเชพเช“!

PowerCLI เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชฐเซ‹เช•เซ‡เชŸ เชฌเซ‚เชธเซเชŸเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚

เชชเซเชฐเชฅเชฎ เชคเชฌเช•เซเช•เซ‹: เชฐเชจเชธเซเชชเซ‡เชธ

เชคเซ‡เชฅเซ€, เชฐเชจเชธเซเชชเซ‡เชธ เชฎเซเช–เซเชฏ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ€ เชฌเชนเชพเชฐเชจเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชธเชฎเชพเช‚เชคเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เช…เชฒเชฌเชคเซเชค, เชคเชฎเซ‡ เชฌเซ€เชœเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชฅเซ‹เชกเซ€ เชฎเซ‡เชฎเชฐเซ€, เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชตเช—เซ‡เชฐเซ‡ เช–เชพเชˆ เชœเชถเซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฅเซ‹เชกเซ€ เชฎเชฟเชจเชฟเชŸเซ‹เชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช• เช—เซ€เช—เชพเชฌเชพเชˆเชŸ เชฎเซ‡เชฎเชฐเซ€ เชตเชพเชชเชฐเซ‡ เช›เซ‡, เชคเซ‹ เชธเช‚เชญเชตเชคเชƒ เชคเชฎเชพเชฐเซ‡ เชฐเชจเชธเซเชชเซ‡เชธเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชนเซ€เช‚ เชชเชกเซ‡. เชชเชฐเช‚เชคเซ เชนเชœเชพเชฐเซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฎเชพเชŸเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชคเชฎเซ‡ เช…เชนเซ€เช‚ เชถเซ€เช–เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹: 
เชชเชพเชตเชฐเชถเซ‡เชฒ เชฐเชจเชธเซเชชเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเชฐเซ‚ เช•เชฐเชตเซ‹: เชญเชพเช— 1

เชฐเชจเชธเซเชชเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเซเช‚ เช†เชชเซ‡ เช›เซ‡:

  • เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชก เช†เชฆเซ‡เชถเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ€เชจเซ‡ เชเชกเชช,
  • เช•เชพเชฐเซเชฏเซ‹เชจเซ‹ เชธเชฎเชพเช‚เชคเชฐ เช…เชฎเชฒ,
  • เชธเชฒเชพเชฎเชคเซ€.

เชœเซเชฏเชพเชฐเซ‡ เชฐเชจเชธเซเชชเซ‡เชธ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐเชฅเซ€ เช…เชนเซ€เช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡:

"เชธเช‚เช—เซเชฐเชน เชตเชฟเชตเชพเชฆ เช vSphere เชฎเชพเช‚ เชŸเซเชฐเซ…เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช›เซ‡. vCenter เชจเซ€ เช…เช‚เชฆเชฐ, เชคเชฎเซ‡ เชฎเชพเชคเซเชฐ เชœเชˆเชจเซ‡ เชœเซ‹เชˆ เชถเช•เชคเชพ เชจเชฅเซ€ เช•เซ‡ เช•เชˆ VM เชตเชงเซ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡. เชธเชฆเชญเชพเช—เซเชฏเซ‡, เชคเชฎเซ‡ เชชเชพเชตเชฐเชถเซ‡เชฒเชจเซ‡ เช†เชญเชพเชฐเซ€ เชฎเชฟเชจเชฟเชŸเซ‹เชฎเชพเช‚ เช† เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
เชนเซเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชถเซ‡เชฐ เช•เชฐเซ€เชถ เชœเซ‡ VMware เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเซเชธเชจเซ‡ เชธเชฎเช—เซเชฐ vCenterเชฎเชพเช‚ เชเชกเชชเชฅเซ€ เชถเซ‹เชงเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเชฐเซ‡เชฐเชพเชถ เชตเชชเชฐเชพเชถ เชชเชฐเชจเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ VM เชจเซ€ เชธเซ‚เชšเชฟ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.  
เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเชพเชตเชฐเชถเซ‡เชฒ เชฐเชจเชธเซเชชเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชฆเชฐเซ‡เช• ESXi เชนเซ‹เชธเซเชŸเชจเซ‡ เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ VM เชฎเชพเช‚เชฅเซ€ เช…เชฒเช— เชฐเชจเชธเซเชชเซ‡เชธเชฎเชพเช‚ เชตเชชเชฐเชพเชถเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช…เชจเซ‡ เชคเชฐเชค เชœ เชชเซ‚เชฐเซเชฃเชคเชพเชจเซ€ เชœเชพเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ. เช† เชชเชพเชตเชฐเชถเซ‡เชฒเชจเซ‡ เชฏเชœเชฎเชพเชจเซ‹ เชฆเซเชตเชพเชฐเชพ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชฆเชฐเซ‡เช•เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชคเชฐเชค เชœ เชจเซ‹เช•เชฐเซ€เช“ เชฌเช‚เชง เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡."

เชธเซ‹เชฐเซเชธ: ESXi เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชชเชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ I/O เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชคเชพเชตเชตเซเช‚

เชจเซ€เชšเซ‡เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชฐเชจเชธเซเชชเซ‡เชธ เชนเชตเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชจเชฅเซ€:

โ€œเชนเซเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ เชœเซ‡ VM เชฎเชพเช‚เชฅเซ€ เช˜เชฃเซ‹ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชจเชตเซ‹ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡. เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ VM เช›เซ‡, เช…เชจเซ‡ เชเช• เชฎเชถเซ€เชจ เชชเชฐ 5-8 เชธเซ‡เช•เชจเซเชก เช–เชฐเซเชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡." 

เชธเซ‹เชฐเซเชธ: RunspacePool เชธเชพเชฅเซ‡ เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเชฟเช‚เช— PowerCLI

เช…เชนเซ€เช‚ เชคเชฎเชพเชฐเซ‡ เช—เซ‡เชŸ-เชตเซเชฏเซ‚เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชšเชพเชฒเซ‹ เชคเซ‡เชจเชพ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เช. 

เชฌเซ€เชœเซ‹ เชคเชฌเช•เซเช•เซ‹: เช—เซ‡เชŸ-เชตเซเชฏเซ‚

เช—เซ‡เชŸ-เชตเซเชฏเซ‚ เชถเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ 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
}
# ะ”ะฐะปะตะต ะ ะฃะšะะœะ˜ ะฟะฐั€ัะธะผ ะฟะพะปัƒั‡ะตะฝะฝั‹ะน ั€ะตะทัƒะปัŒั‚ะฐั‚

เชฌเชงเซเช‚ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช…เชจเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡. เชคเซ‡ เช•เซ‹เชซเซ€ เชฌเซเชฐเซ‡เช• เชธเชพเชฅเซ‡ เชฅเซ‹เชกเซ€ เชฎเชฟเชจเชฟเชŸเซ‹เชฎเชพเช‚ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡. เชซเชฟเชฒเซเชŸเชฐเซ‡เชถเชจ เชชเชฐ เชธเซเช•เซเชฐเซ‚ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡ เชฅเชˆ เช—เชฏเซเช‚.

เชชเชฐเช‚เชคเซ เชšเชพเชฒเซ‹ เชธเชฎเชฏ เชฎเชพเชชเซ€เช:

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 $_
           }
       }
   }

เชนเชตเซ‡ เชšเชพเชฒเซ‹ Runspace Pools เชฆเซเชตเชพเชฐเชพ เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเชฟเช‚เช—เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ€เช.  

เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช›เซ‡:

  1. เช…เชฎเชจเซ‡ เชคเชฎเชพเชฎ VM เชจเซ€ เชฏเชพเชฆเซ€ เชฎเชณเซ‡ เช›เซ‡.
  2. เชธเชฎเชพเช‚เชคเชฐ เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชฎเชพเช‚ เช†เชชเชฃเชจเซ‡ cloud.uuid เชฎเชณเซ‡ เช›เซ‡.
  3. เช…เชฎเซ‡ เชเช• เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช.
  4. เช…เชฎเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ CloudUUID เชซเซ€เชฒเซเชกเชจเชพ เชฎเซ‚เชฒเซเชฏ เชฆเซเชตเชพเชฐเชพ เชœเซ‚เชฅเชฌเชฆเซเชง เช•เชฐเซ€เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ€เช เช›เซ€เช: เชœเซเชฏเชพเช‚ เช…เชจเชจเซเชฏ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ 1 เช•เชฐเชคเชพ เชตเชงเชพเชฐเซ‡ เชนเซ‹เชฏ เชคเซ‡ VM เช›เซ‡ เชœเซ‡ เช…เชฎเซ‡ เชถเซ‹เชงเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเชณเซ‡ เช›เซ‡:


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 เชฎเชพเชŸเซ‡. เชคเซ‡ เชเชกเชชเซ€ เชจเชฅเซ€ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชœเชŸเชฟเชฒ เชตเชธเซเชคเซเช“ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ‡ เช›เซ‡. เชเช• เชคเชพเชฐเซเช•เชฟเช• เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชพเชฏ เช›เซ‡: เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเชจเซ‡ เชซเช•เซเชค VM เชจเชพ เชจเชพเชฎ, เชคเซ‡เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชตเชฟเชถเซ‡เชทเชคเชพเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชฎเชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช…เชจเซ‡ เชเช• เชญเชฏเช‚เช•เชฐ PSO เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡?  

เชตเชงเซเชฎเชพเช‚, Get-AdvancedOptions เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เช…เชตเชฐเซ‹เชง เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚เชฅเซ€ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เชฐเชจเชธเซเชชเซ‡เชธ เชชเซ‚เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชนเชตเซ‡ เช“เชตเชฐเช•เชฟเชฒ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชธเชคเซเชฐ เชธเซ‹เช‚เชชเชคเซ€ เชตเช–เชคเซ‡ เชธเซเช•เซเชตเซ‹เชŸ เชฅเซเชฐเซ‡เชกเซ‹เชฎเชพเช‚ เชงเซ€เชฎเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชธเชพเชงเชจ เชธเชพเชฐเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช•เซ‡เชธ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚. 

เชšเชพเชฒเซ‹ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชกเซ‡เชŸเชพเชจเชพ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เชœเซ‹เชˆเช: เชคเซ‡ เช—เซ‡เชŸ-เชตเซเชฏเซ‚ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชธเชฟเชตเชพเชฏ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆ เชจเชฅเซ€. 

เชšเชพเชฒเซ‹ เชชเชพเชตเชฐเชถเซ‡เชฒ เชฎเชพเชธเซเชŸเชฐเซเชธเชจเซ€ เชชเซเชฐเชพเชšเซ€เชจ เชคเช•เชจเซ€เช• เชชเชฐ เช•เซ‰เชฒ เช•เชฐเซ€เช: เชซเชฟเชฒเซเชŸเชฐเซเชธ, เชธเซ‰เชฐเซเชŸเชฟเช‚เช— เช…เชจเซ‡ เช—เซเชฐเซ‚เชชเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช• เชฒเชพเช‡เชจ. เช…เช—เชพเช‰เชจเซ€ เชฌเชงเซ€ เชญเชฏเชพเชจเช•เชคเชพ เชธเซเช‚เชฆเชฐ เชฐเซ€เชคเซ‡ เชเช• เชฒเชพเช‡เชจเชฎเชพเช‚ เชคเซ‚เชŸเซ€ เช—เชˆ เช›เซ‡ เช…เชจเซ‡ เชเช• เชธเชคเซเชฐเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡:


$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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹