PowerCLI เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดฑเต‹เด•เตเด•เดฑเตเดฑเต เดฌเต‚เดธเตเดฑเตเดฑเตผ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเด‚ 

เดคเดพเดฎเดธเดฟเดฏเดพเดคเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต, เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเดฟเดŽเด‚เดตเต†เดฏเตผ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ เดชเดคเดฟเดตเต เดœเต‹เดฒเดฟเด•เตพ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดตเดฐเตเดจเตเดจเต. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเดฟเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต PowerShell เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ VMware PowerCLI เดตเดฐเตเดจเตเดจเต.

เดโ€ŒเดŽเดธเตโ€Œเด‡ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเดณเตเด‚ "เดšเดฟเดฒ เดฎเดพเดœเดฟเด•เต" เด•เดพเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต cmdlets เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเดณเตเด‚ เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดฎเตเดจเตเดจเต‹เดŸเตเดŸเต เดจเดฟเด™เตเด™เตพ PowerShell เดฎเดพเดธเตเดฑเตเดฑเต‡เดดเตเดธเต เดšเต†เดฏเตเดคเตเดตเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚. เดจเดฟเด™เตเด™เตพ เดจเต‚เดฑเตเด•เดฃเด•เตเด•เดฟเดจเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เดŽเดฃเตเดฃเดพเตป เดคเตเดŸเด™เตเด™เตเดฎเตเดชเต‹เตพ, เดšเต†เดฑเดฟเดฏ เดธเตเด•เต†เดฏเดฟเดฒเดฟเตฝ เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดตเดฒเดฟเดฏ เดคเต‹เดคเดฟเตฝ เดตเดณเดฐเต† เดธเดพเดตเดงเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚. 

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, 2 เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚:

  • เดชเดตเตผเดทเต†เตฝ เดฑเตบเดธเตโ€Œเดชเต‡เดธเตเด•เตพ - เดชเตเดฐเดคเตเดฏเต‡เด• เดคเตเดฐเต†เดกเตเด•เดณเดฟเตฝ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเดŸเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเดฎเต€เดชเดจเด‚; 
  • เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚ โ€“ เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจ PowerCLI เดซเด‚เด—เตโ€Œเดทเตป, Windows-เดฒเต† Get-WMIObject-เดจเตเดฑเต† เด…เดจเดฒเต‹เด—เต. เดˆ cmdlet เดŽเดจเตเดฑเดฟเดฑเตเดฑเดฟเด•เดณเต‹เดŸเตŠเดชเตเดชเดฎเตเดณเตเดณ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เดณเต† เดตเดฒเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดฒเดณเดฟเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดคเดฐเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดฒ เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เด…เดคเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฑเดคเตเดคเตเดตเดฐเตเดจเตเดจเต.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เด“เดฐเต‹ เด‰เดชเด•เดฐเดฃเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดคเต เด’เดจเตเดจเต เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเดจเต‡เด•เตเด•เดพเตพ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเต‹เด•เตเด•เดพเด‚. เดชเต‹เด•เต‚!

PowerCLI เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดฑเต‹เด•เตเด•เดฑเตเดฑเต เดฌเต‚เดธเตเดฑเตเดฑเตผ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเด‚

เด†เดฆเตเดฏ เด˜เดŸเตเดŸเด‚: เดฑเตบเดธเตเดชเต†เดฏเตเดธเต

เด…เดคเดฟเดจเดพเตฝ, เดชเตเดฐเดงเดพเดจ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเต เดชเตเดฑเดคเตเดคเตเดณเตเดณ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดŸเต† เดธเดฎเดพเดจเตเดคเดฐ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดฑเตบเดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด•เตเดฑเดšเตเดšเต เดฎเต†เดฎเตเดฎเดฑเดฟ, เดชเตเดฐเต‹เดธเดธเตผ เดฎเตเดคเดฒเดพเดฏเดต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดฐเดฃเตเดŸเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดœเดฟเด—เดพเดฌเตˆเดฑเตเดฑเต เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดพเตฝ, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต Runspace เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดตเดธเตเดคเตเด•เตเด•เตพเด•เตเด•เตเดณเตเดณ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพเด•เตเด•เต เด…เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดตเดฟเดŸเต† เดชเด เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเด‚: 
เดชเดตเตผเดทเต†เตฝ เดฑเตบเดธเตโ€Œเดชเต‡เดธเตเด•เดณเตเดŸเต† เดชเตเดฐเดพเดฐเด‚เดญ เด‰เดชเดฏเต‹เด—เด‚: เดญเดพเด—เด‚ 1

Runspace เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเดพเดฃเต เดจเตฝเด•เตเดจเตเดจเดคเต:

  • เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เด•เดฎเดพเตปเดกเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ เดตเต‡เด—เดค,
  • เดšเตเดฎเดคเดฒเด•เดณเตเดŸเต† เดธเดฎเดพเดจเตเดคเดฐ เดจเดฟเตผเดตเตเดตเดนเดฃเด‚,
  • เดธเตเดฐเด•เตเดท.

Runspace เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ:

"เดธเด‚เดญเดฐเดฃ โ€‹โ€‹เดคเตผเด•เตเด•เดฎเดพเดฃเต vSphere-เตฝ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดฏเดพเดธเดฎเตเดณเตเดณ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเดฟเดฒเตŠเดจเตเดจเต. vCenter-เดจเตเดณเตเดณเดฟเตฝ, เดเดคเต VM เด†เดฃเต เด•เต‚เดŸเตเดคเตฝ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเต‹เดฏเดฟ เด•เดพเดฃเดพเดจเดพเด•เดฟเดฒเตเดฒ. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, PowerShell-เดจเต เดจเดจเตเดฆเดฟ เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚.
VMware เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดกเตโ€Œเดฎเดฟเดจเดฟเดธเตโ€ŒเดŸเตเดฐเต‡เดฑเตเดฑเตผเดฎเดพเดฐเต† vCenter-เตฝ เด‰เดŸเดจเต€เดณเด‚ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดคเดฟเดฐเดฏเดพเดจเตเด‚ เด…เดตเดฐเตเดŸเต† เดถเดฐเดพเดถเดฐเดฟ เด‰เดชเดญเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เดกเดพเดฑเตเดฑเดฏเตเดณเตเดณ VM-เด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดžเดพเตป เดชเด™เตเด•เดฟเดŸเตเด‚.  
เด“เดฐเต‹ ESXi เดนเต‹เดธเตเดฑเตเดฑเดฟเดจเต†เดฏเตเด‚ เดธเตเดตเดจเตเดคเด‚ VM-เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฑเตบเดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เดชเดญเต‹เด— เดตเดฟเดตเดฐเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด‰เดŸเตป เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏเดคเดพเดฏเดฟ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต PowerShell เดฑเตบเดธเตโ€Œเดชเต‡เดธเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดนเต‹เดธเตเดฑเตเดฑเตเด•เดณเดฟเดฒเต‚เดŸเต† เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเต เด“เดฐเต‹เดฐเตเดคเตเดคเตผเด•เตเด•เตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเต‚เตผเดคเตเดคเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เดœเต‹เดฒเดฟเด•เตพ เด‰เดŸเดจเดŸเดฟ เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด‡เดคเต PowerShell-เดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: เด’เดฐเต ESXi เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเดฟเตฝ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป I/O เดŽเด™เตเด™เดจเต† เด•เดพเดฃเดฟเด•เตเด•เดพเด‚

เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, Runspace เดฎเต‡เดฒเดฟเตฝ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดฒเตเดฒ:

โ€œเด’เดฐเต เดตเดฟเดŽเดฎเตเดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดงเดพเดฐเดพเดณเด‚ เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เดงเดพเดฐเดพเดณเด‚ เดตเดฟเดŽเดฎเตเดฎเตเด•เตพ เด‰เดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚, เด’เดฐเต เดฎเต†เดทเต€เดจเดฟเตฝ 5-8 เดธเต†เด•เตเด•เตปเดกเต เดšเต†เดฒเดตเดดเดฟเด•เตเด•เตเดจเตเดจเต. 

เด…เดตเดฒเด‚เดฌเด‚: RunspacePool เด‰เดณเตเดณ เดฎเตพเดŸเตเดŸเดฟเดคเตเดฐเต†เดกเดฟเด‚เด—เต PowerCLI

เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚. 

เดฐเดฃเตเดŸเดพเด‚ เด˜เดŸเตเดŸเด‚: เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚

Get-View เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, cmdlets เดชเตŠเดคเตเดตเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด“เตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต. 

API เดฑเดซเดฑเตปเดธเต เดฌเตเด•เตเด•เตเด•เตพ เดชเด เดฟเด•เตเด•เดพเดคเต†เดฏเตเด‚ เด…เดŸเตเดคเตเดค เดšเด•เตเดฐเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดคเต†เดฏเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเต‚เตผเดตเตเดตเด‚ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต Cmdlets เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดชเดดเดฏ เด•เดพเดฒเดคเตเดคเต เดจเต‚เดฑเต‹ เดฐเดฃเตเดŸเต‹ เดตเดฐเดฟ เด•เต‹เดกเต เดŽเดŸเตเดคเตเดคเดคเต, เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดšเต†เดฏเตเดฏเดพเตป PowerShell เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดธเต—เด•เดฐเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเต. cmdlets เด‰เดณเตเดณเดฟเตฝ เดคเดจเตเดจเต† เดฎเดพเดจเตเดคเตเดฐเดฟเด•เดคเดฏเดฟเดฒเตเดฒ: เด…เดคเต‡ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต, เดŽเดจเตเดจเดพเตฝ เดคเดพเดดเตเดจเตเดจ เดคเดฒเดคเตเดคเดฟเตฝ, เดธเดฃเตเดฃเดฟ เด‡เดจเตเดคเตเดฏเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเดธเตเดฑเตเดฑเดฑเตเดŸเต† เดจเตˆเดชเตเดฃเตเดฏเดฎเตเดณเตเดณ เด•เตˆเด•เดณเดพเตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดชเตเดชเต‹เตพ, Get-View-เดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต Get-VM cmdlet เดŽเดŸเตเด•เตเด•เดพเด‚: เด‡เดคเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดธเด‚เดฏเต‹เดœเดฟเดค เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต, เด…เดคเต เดฎเดฑเตเดฑเต เด…เดจเตเดฌเดจเตเดง เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต: VMHost, Datastore, เดฎเตเดคเดฒเดพเดฏเดต.  

เดคเดฟเดฐเดฟเดšเตเดšเตเด•เดฟเดŸเตเดŸเดฟเดฏ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเตฝ เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏเดฟ เด’เดจเตเดจเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ เด…เดคเดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเดคเตเดคเต Get-View. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เตผเดถเดจเดฎเดพเดฏเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด‡เดคเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเด‚. เดตเดฟเตปเดกเต‹เดธเต เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตŠเดคเตเดตเต†เดฏเตเด‚ เดนเตˆเดชเตเดชเตผ-เดตเดฟเดฏเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚, Get-WMIObject cmdlet เด’เดฐเต เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เด…เดจเดฒเต‹เด—เต เด†เดฃเต - เด†เดถเดฏเด‚ เดธเดฎเดพเดจเดฎเดพเดฃเต.

เดชเต‹เดฏเดฟเดจเตเดฑเต เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เดณเดฟเดฒเต† เดชเดคเดฟเดตเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เต เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚ เด…เดธเต—เด•เดฐเตเดฏเดฎเดพเดฃเต. เดŽเดจเตเดจเดพเตฝ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต, เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดตเดธเตเดคเตเด•เตเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเด‚ เดตเดฐเตเดฎเตเดชเต‹เตพ เด…เดคเดฟเดจเต เดตเดฟเดฒเดฏเดฟเดฒเตเดฒ.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต VMware เดฌเตเดฒเต‹เด—เดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เดพเด‚: เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚เดตเดฟเดจเตเดณเตเดณ เด†เดฎเตเด–เด‚

เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เด•เต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเด‚. 

เด’เดฐเต เดตเดฟเดŽเด‚ เด…เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเตเดจเตเดจเต

เด’เดฐเต เดฆเดฟเดตเดธเด‚ เดŽเดจเตเดฑเต† เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตป เดŽเดจเตเดจเต‹เดŸเต เด…เดตเดจเตเดฑเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเต. เดŸเดพเดธเตโ€Œเด•เตเด•เต เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดฆเดฟเดจเดšเดฐเตเดฏเดฏเดพเดฃเต: เดกเตเดฏเต‚เดชเตเดฒเดฟเด•เตเด•เต‡เดฑเตเดฑเต 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 VM-เด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ. เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเดŸเต† เด…เดญเดพเดตเดตเตเด‚ เดซเดฒเด™เตเด™เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เด…เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดคเดฏเตเดฎเดพเดฃเต เดฌเต‹เดฃเดธเต. เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต vCenter-เตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต‡เดธเดฎเดฏเด‚ เดนเต‹เดธเตเดฑเตเดฑเต เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดฒเดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเต‹ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เดดเต‹ เด†เดฆเตเดฏเด‚ เดฐเด•เตเดทเดพเดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต†เดคเตเดคเตเดจเตเดจเดคเต เดฑเตบเดธเตโ€Œเดชเต‡เดธเตเด•เดณเดพเดฃเต. เดˆ เดธเดฎเต€เดชเดจเด‚ เดŽเดจเตเดคเดพเดฃเต เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจเดคเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เด†เดฆเตเดฏ เดตเต‡เด—เดค เด“เดฃเดพเด•เตเด•เตเด•: PowerShell Runspaces

เดˆ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด†เดฆเตเดฏเด‚ เดฎเดจเดธเตเดธเดฟเตฝ เดตเดฐเตเดจเตเดจเดคเต เดฒเต‚เดชเตเดชเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•เดฏเดฒเตเดฒ, เดธเดฎเดพเดจเตเดคเดฐ เดคเตเดฐเต†เดกเตเด•เดณเดฟเตฝ, เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด‚ เด’เดฐเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดถเต‡เด–เดฐเดฟเดšเตเดšเต เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต. 

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดชเตเดฐเดถเตโ€ŒเดจเดฎเตเดฃเตเดŸเต: vCenter-เดฒเต‡เด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดธเตเดตเดคเดจเตเดคเตเดฐ เดธเต†เดทเดจเตเด•เตพ เดคเตเดฑเด•เตเด•เดพเตป PowerCLI เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เดฟเดฒเตเดฒ เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดคเดฎเดพเดถ เดชเดฟเดถเด•เต เดตเดฐเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚:

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 เดตเตเดฏเด•เตเดคเดฟเด—เดค เดตเดฟเดŽเด‚ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพเด•เตเด•เต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเดฐเดตเดงเดฟ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเดณเดฐเต† เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฃเต. เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดจเตเดจเต† (Get-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-เดฒเต‡เด•เตเด•เต. เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดธเตเดคเตเด•เตเด•เดณเตเดฎเดพเดฏเดฟ เด‡เดŸเดชเต†เดŸเตเดจเตเดจเดคเดฟเดจเดพเตฝ เด‡เดคเต เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเดฒเตเดฒ. เด’เดฐเต เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: เดžเด™เตเด™เตพเด•เตเด•เต VM-เดจเตเดฑเต† เดชเต‡เดฐเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅเดฏเตเด‚ เด’เดฐเต เดคเดจเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเดตเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด…เดงเดฟเด• เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด’เดฐเต เดญเต€เด•เดฐเดฎเดพเดฏ PSObject เด‰เด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต?  

เด•เต‚เดŸเดพเดคเต†, Get-AdvancedOptions เดŽเดจเตเดจ เดฐเต‚เดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เดคเดŸเดธเตเดธเด‚ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตโ€Œเดคเต. เด’เดฐเต เดธเต†เดทเตป เด•เตˆเดฎเดพเดฑเตเดฎเตเดชเต‹เตพ เดธเตเด•เตเดตเดพเดฑเตเดฑเต เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดธเตเดฒเต‹ เดŸเดพเดธเตโ€Œเด•เต เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ Runspace Pools เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดชเตเดชเต‹เตพ เด“เดตเตผเด•เดฟเตฝ เดชเต‹เดฒเต† เดคเต‹เดจเตเดจเตเดจเตเดจเต. เด‰เดชเด•เดฐเดฃเด‚ เดจเดฒเตเดฒเดคเดพเดฃเต, เดชเด•เตเดทเต‡ เดˆ เด•เต‡เดธเดฟเตฝ เด…เดฒเตเดฒ. 

เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเตปเดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดจเต‹เด•เตเด•เดพเด‚: เด‡เดคเต เด’เดฐเต เด—เต†เดฑเตเดฑเต-เดตเตเดฏเต‚ เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เด…เดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเตŠเดจเตเดจเตเดฎเดฒเตเดฒ. 

เดชเดตเตผเดทเต†เตฝ เดฎเดพเดธเตเดฑเตเดฑเต‡เดดเตเดธเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดคเดจ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚: เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดตเดฐเดฟ, เดคเดฐเด‚เดคเดฟเดฐเดฟเด•เตเด•เตเด•, เด—เตเดฐเต‚เดชเตเดชเตเดšเต†เดฏเตเดฏเตเด•. เดฎเตเดฎเตเดชเดคเตเดคเต† เดŽเดฒเตเดฒเดพ เดญเดฏเดพเดจเด•เด™เตเด™เดณเตเด‚ เดฎเดจเต‹เดนเดฐเดฎเดพเดฏเดฟ เด’เดฐเต เดตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดšเตเดฐเตเด•เตเด•เดฟ เด’เดฐเต เดธเต†เดทเดจเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต:


$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 เดตเดธเตเดคเตเด•เตเด•เตพเด•เตเด•เต. เด•เตŠเดณเตเดณเดพเด‚!

เดชเด•เดฐเด‚ เด’เดฐเต เดจเดฟเด—เดฎเดจเดคเตเดคเดฟเตฝ เดŽเดจเตเดจ

เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดซเดฒเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเต เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดฏเดพเตป เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต. เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฒเดฟเดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดค เด“เดฐเต‹ เดฐเต€เดคเดฟเด•เดณเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดฏเต‹เด—เด•เตเดทเดฎเดคเดฏเตเดŸเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเดฒเตเดฒเดคเดพเดฃเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดฒเต† เดชเตเดฐเต‹เดธเดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดทเดจเตเดฑเต†เดฏเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดฑเต†เดฏเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

PS: เดฒเต‡เด–เดจเด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดธเดนเดพเดฏเดคเตเดคเดฟเดจเตเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเด‚ เดŽเดฒเตเดฒเดพ เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เด…เด‚เด—เด™เตเด™เตพเด•เตเด•เตเด‚ เดŽเดดเตเดคเตเดคเตเด•เดพเดฐเตป เดจเดจเตเดฆเดฟ เดชเดฑเดฏเตเดจเตเดจเต. เด•เตˆเด•เดพเดฒเตเด•เดณเตเดณเตเดณเดตเตผ เดชเต‹เดฒเตเด‚. เดชเดฟเดจเตเดจเต† เด•เดพเดฒเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเตเดคเดตเตผ เดชเต‹เดฒเตเด‚ เดฌเต‹เดต เด•เตบเดธเตเดŸเตเดฐเด•เตเดฑเตเดฑเตผ เดชเต‹เดฒเต†.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•