PowerCLI เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจฐเจพเจ•เฉ‡เจŸ เจฌเฉ‚เจธเจŸเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡ 

เจœเจฒเจฆเฉ€ เจœเจพเจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš, เจ•เฉ‹เจˆ เจตเฉ€ VMware เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจ• เจฐเฉเจŸเฉ€เจจ เจ•เฉฐเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เจฐเจจ เจฒเจˆ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจญ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจซเจฟเจฐ PowerShell เจœเจพเจ‚ VMware PowerCLI เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ ISE เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ "เจ•เจฟเจธเฉ‡ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจœเจพเจฆเฉ‚" เจฆเฉ‡ เจ•เจพเจฐเจจ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจฎเฉ‹เจกเจฟเจŠเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฎเจฟเจ†เจฐเฉ€ cmdlets เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฅเฉ‹เฉœเฉเจนเจพ เจ…เฉฑเจ—เฉ‡ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจตเจฟเฉฑเจš เจฎเฉเจนเจพเจฐเจค เจนเจพเจธเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเจ‚เจ•เฉœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ—เจฟเจฃเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡ เจ•เจฟ เจ›เฉ‹เจŸเฉ‡ เจชเฉˆเจฎเจพเจจเฉ‡ 'เจคเฉ‡ เจฎเจฆเจฆ เจ•เจฐเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจตเฉฑเจกเฉ‡ เจชเฉˆเจฎเจพเจจเฉ‡ 'เจคเฉ‡ เจ•เจพเจซเจผเฉ€ เจนเฉŒเจฒเฉ€ เจšเฉฑเจฒเจฆเฉ€เจ†เจ‚ เจนเจจเฅค 

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, 2 เจธเจพเจงเจจ เจฎเจฆเจฆ เจ•เจฐเจจเจ—เฉ‡:

  • PowerShell Runspaces - เจ‡เฉฑเจ• เจชเจนเฉเฉฐเจš เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ; 
  • เจชเฉเจฐเจพเจชเจคเจฟ-เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€ - เจ‡เฉฑเจ• เจฌเฉเจจเจฟเจ†เจฆเฉ€ PowerCLI เจซเฉฐเจ•เจธเจผเจจ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจตเจฟเฉฑเจš Get-WMIObject เจฆเจพ เจ‡เฉฑเจ• เจเจจเจพเจฒเจพเจ—เฅค เจ‡เจน cmdlet เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจ–เจฟเฉฑเจšเจฆเจพ, เจชเจฐ เจธเจงเจพเจฐเจจ เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจตเจธเจคเฉ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ•เจˆ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจน เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจธเจพเจนเจฎเจฃเฉ‡ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจ…เฉฑเจ—เฉ‡, เจฎเฉˆเจ‚ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจŸเฉ‚เจฒ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เจพเฅค เจ†เจ‰ เจ–เจพเจธ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ€ เจจเจพเจฒเฉ‹เจ‚ เจฌเจฟเจนเจคเจฐ เจ•เจฆเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจœเจพเจฃเจพ!

PowerCLI เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจฐเจพเจ•เฉ‡เจŸ เจฌเฉ‚เจธเจŸเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡

เจชเจนเจฟเจฒเจพ เจชเฉœเจพเจ…: เจฐเจจเจธเจชเฉ‡เจธ

เจ‡เจธ เจฒเจˆ, เจฐเจจเจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจฎเฉเฉฑเจ– เจฎเฉ‹เจกเฉ€เจŠเจฒ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจ•เฉฐเจฎเจพเจ‚ เจฆเฉ€ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจ•เฉเจ เจฎเฉˆเจฎเฉ‹เจฐเฉ€, เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ, เจ†เจฆเจฟ เจจเฉ‚เฉฐ เจ–เจพ เจฒเจตเฉ‡เจ—เฉ€เฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เฉเจ เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจšเฉฑเจฒเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจธเฉฐเจญเจต เจคเฉŒเจฐ 'เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฐเจจเจธเจชเฉ‡เจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจชเจตเฉ‡เจ—เฉ€เฅค เจชเจฐ เจนเจœเจผเจพเจฐเจพเจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจฒเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฒเจˆ เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจธเจฟเฉฑเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹: 
PowerShell Runspaces เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจตเจฐเจคเฉ‹เจ‚: เจญเจพเจ— 1

เจฐเจจเจธเจชเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจ•เฉ€ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ:

  • เจšเจฒเจพเจˆเจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจฟเจค เจ•เจฐเจ•เฉ‡ เจ—เจคเฉ€,
  • เจ•เจพเจฐเจœเจพเจ‚ เจฆเจพ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ,
  • เจธเฉเจฐเฉฑเจ–เจฟเจ†.

เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฐเจŸเจฐเจจเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ เจœเจฆเฉ‹เจ‚ Runspace เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆ:

"เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจฟเจตเจพเจฆ vSphere เจตเจฟเฉฑเจš เจŸเจฐเฉˆเจ• เจ•เจฐเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจ”เจ–เฉ‡ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค vCenter เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจคเฉเจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจœเจพ เจ•เฉ‡ เจ‡เจน เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจ•เจฟ เจ•เจฟเจนเฉœเจพ VM เจตเจงเฉ‡เจฐเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ–เจชเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ PowerShell เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจธเจพเจ‚เจเฉ€ เจ•เจฐเจพเจ‚เจ—เจพ เจœเฉ‹ VMware เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจ•เจพเจ‚ เจจเฉ‚เฉฐ vCenter เจตเจฟเฉฑเจš เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ–เฉ‹เจœ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ”เจธเจค เจ–เจชเจค 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ VMs เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค  
เจธเจ•เจฐเจฟเจชเจŸ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจฐเจจเจธเจชเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจนเจฐเฉ‡เจ• ESXi เจนเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจฐเจจเจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจ†เจชเจฃเฉ‡ VMs เจคเฉ‹เจ‚ เจ–เจชเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐเจจ เจ…เจคเฉ‡ เจคเฉเจฐเฉฐเจค เจฎเฉเจ•เฉฐเจฎเจฒ เจนเฉ‹เจฃ เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจœเจพ เจธเจ•เฉ‡เฅค เจ‡เจน PowerShell เจจเฉ‚เฉฐ เจนเฉ‹เจธเจŸเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจ…เจคเฉ‡ เจนเจฐ เจ‡เฉฑเจ• เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, เจจเฉŒเจ•เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจฌเฉฐเจฆ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค"

เจธเจฐเฉ‹เจค: เจ‡เฉฑเจ• ESXi เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ I/O เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฆเจฟเจ–เจพเจ‰เจฃเจพ เจนเฉˆ

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, Runspace เจนเฉเจฃ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ:

โ€œเจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจœเฉ‹ VM เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจกเฉ‡เจŸเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฒเฉ‹เฉœ เจชเฉˆเจฃ 'เจคเฉ‡ เจจเจตเจพเจ‚ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฆเฉ€ เจนเฉˆเฅค เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ VM เจนเจจ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ 5-8 เจธเจ•เจฟเฉฐเจŸ เจ–เจฐเจšเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค 

เจธเจฐเฉ‹เจค: RunspacePool เจจเจพเจฒ เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— PowerCLI

เจ‡เฉฑเจฅเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ Get-View เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€, เจ†เจ“ เจ‡เจธ 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจเฅค 

เจฆเฉ‚เจœเจพ เจชเฉœเจพเจ…: เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹

เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ•เจฟ Get-View เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจ•เจฟเจ‰เจ‚ เจนเฉˆ, เจ‡เจน เจฏเจพเจฆ เจฐเฉฑเจ–เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ cmdlets เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค 

API เจธเฉฐเจฆเจฐเจญ เจ•เจฟเจคเจพเจฌเจพเจ‚ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ‡ เจชเจนเฉ€เจ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจ–เฉ‹เจœเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ Cmdlets เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจชเฉเจฐเจพเจฃเฉ‡ เจฆเจฟเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจธเฉŒ เจœเจพเจ‚ เจฆเฉ‹ เจฒเจพเจˆเจจเจพเจ‚ เจ•เฉ€ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจธเจจ, เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเจนเฉ‚เจฒเจค เจฒเจˆ เจ—เจคเฉ€ เจจเจพเจฒ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš cmdlets เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ•เฉ‹เจˆ เจœเจพเจฆเฉ‚ เจจเจนเฉ€เจ‚ เจนเฉˆ: เจ‰เจนเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ, เจชเจฐ เจ‡เฉฑเจ• เจนเฉ‡เจ เจฒเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡, เจธเฉฐเจจเฉ€ เจญเจพเจฐเจค เจฆเฉ‡ เจ‡เฉฑเจ• เจฎเจพเจธเจŸเจฐ เจฆเฉ‡ เจนเฉเจจเจฐเจฎเฉฐเจฆ เจนเฉฑเจฅเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฒเจฟเจ–เฉ€ เจ—เจˆเฅค

เจนเฉเจฃ, Get-View เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจ†เจ“ Get-VM cmdlet เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚: เจ‡เจน เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจเจ•เจธเฉˆเจธ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉฐเจฏเฉเจ•เจค เจ†เจฌเจœเฉˆเจ•เจŸ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจฐเจฅเจพเจค, เจ‡เจน เจ‡เจธ เจจเจพเจฒ เจนเฉ‹เจฐ เจธเจฌเฉฐเจงเจค เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ: VMHost, Datastore, เจ†เจฆเจฟเฅค  

Get-View เจ‡เจธเจฆเฉ€ เจฅเจพเจ‚ 'เจคเฉ‡ เจตเจพเจชเจธ เจ•เฉ€เจคเฉ€ เจตเจธเจคเฉ‚ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจตเฉ€ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจนเฉœเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเฉ‹ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ†เจฌเจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ†เจธเจพเจจ เจฌเจฃเจพ เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจคเฉ‡ เจนเจพเจˆเจชเจฐ-เจตเฉ€ เจตเจฟเฉฑเจš เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, Get-WMIObject cmdlet เจ‡เฉฑเจ• เจธเจฟเฉฑเจงเจพ เจเจจเจพเจฒเจพเจ— เจนเฉˆ - เจตเจฟเจšเจพเจฐ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจนเฉˆเฅค

Get-View เจฌเจฟเฉฐเจฆเฉ‚ เจตเจธเจคเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจฐเฉเจŸเฉ€เจจ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆเฅค เจชเจฐ เจœเจฆเฉ‹เจ‚ เจ‡เจน เจนเจœเจผเจพเจฐเจพเจ‚ เจ…เจคเฉ‡ เจนเจœเจผเจพเจฐเจพเจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจ—เฉฑเจฒ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธเจฆเจพ เจ•เฉ‹เจˆ เจฎเฉเฉฑเจฒ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ.

เจคเฉเจธเฉ€เจ‚ VMware เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹: Get-View เจจเจพเจฒ เจœเจพเจฃ-เจชเจ›เจพเจฃ

เจนเฉเจฃ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจธเจฒ เจ•เฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจญ เจ•เฉเจ เจฆเจฟเจ–เจพเจตเจพเจ‚เจ—เจพเฅค 

เจ‡เฉฑเจ• 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 เจคเฉ‹เจ‚ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจนเฉ‹เจธเจŸ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจพเจ‚ เจนเจœเจผเจพเจฐเจพเจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจฐเจจเจธเจชเฉ‡เจธ เจฌเจšเจพเจ… เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจชเจนเฉเฉฐเจš เจ•เฉ€ เจฒเจฟเจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค

เจชเจนเจฟเจฒเฉ€ เจธเจชเฉ€เจก เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹: PowerShell Runspaces

เจ‡เจธ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจœเฉ‹ เจฆเจฟเจฎเจพเจ— เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ เจ‰เจน เจนเฉˆ เจฒเฉ‚เจช เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจตเจพเจฐ เจจเจนเฉ€เจ‚, เจชเจฐ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจตเจฟเฉฑเจš, เจธเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ•เจฐเจจเจพ เจนเฉˆเฅค 

เจชเจฐ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ: 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.

เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจธเฉˆเจธเจผเจจ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเจพเจธ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ PowerShell เจ‰เจนเจจเจพเจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจœเจพเจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸเจฌเจฒเจพเจ• เจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจšเจฒเฉ‹ $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. เจธเจพเจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ 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 เจตเจธเจคเฉ‚เจ†เจ‚ เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจชเจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฌเจนเฉเจค เจฌเฉ‡เจขเฉฐเจ—เฉ‡ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจ†เจฌเจœเฉˆเจ•เจŸ (Get-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 เจฒเจˆเฅค เจ‡เจน เจคเฉ‡เจœเจผ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจคเจฐเจ•เจชเฉ‚เจฐเจจ เจธเจตเจพเจฒ เจ‰เฉฑเจ เจฆเจพ เจนเฉˆ: เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจตเจพเจงเฉ‚ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจญเจฟเจ†เจจเจ• PSOเจฌเจœเฉˆเจ•เจŸ เจฆเฉ€ เจ•เจฟเจ‰เจ‚ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ VM เจฆเฉ‡ เจจเจพเจฎ, เจ‡เจธเจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ›เจฒ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ?  

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, Get-AdvancedOptions เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฐเฉเจ•เจพเจตเจŸ เจจเฉ‚เฉฐ เจธเจ•เฉเจฐเจฟเจชเจŸ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจฐเจจเจธเจชเฉ‡เจธ เจชเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจนเฉเจฃ เจ“เจตเจฐเจ•เจฟเฉฑเจฒ เจตเจพเจ‚เจ— เจœเจพเจชเจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเฉˆเจธเจผเจจ เจจเฉ‚เฉฐ เจธเฉŒเจ‚เจชเจฃ เจตเฉ‡เจฒเฉ‡ เจธเจ•เฉเจเจŸ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจนเฉŒเจฒเฉ€ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจฌเจฐเจพเจฌเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจธเฉฐเจฆ เจตเจงเฉ€เจ† เจนเฉˆ, เจชเจฐ เจ‡เจธ เจ•เฉ‡เจธ เจฒเจˆ เจจเจนเฉ€เจ‚. 

เจ†เจ‰ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ: เจ‡เจน เจ‡เฉฑเจ• Get-View เจ†เจฌเจœเฉˆเจ•เจŸ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค 

เจ†เจ‰ PowerShell เจฎเจพเจธเจŸเจฐเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจพเจšเฉ€เจจ เจคเจ•เจจเฉ€เจ• 'เจคเฉ‡ เจ•เจพเจฒ เจ•เจฐเฉ€เจ: เจซเจฟเจฒเจŸเจฐ, เจ›เจพเจ‚เจŸเฉ€ เจ…เจคเฉ‡ เจ—เจฐเฉเฉฑเจชเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจฒเจพเจˆเจจเฅค เจชเจฟเจ›เจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฆเจนเจฟเจธเจผเจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเจพเจจเจฆเจพเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจธเจฎเฉ‡เจŸเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเจธเจผเจจ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:


$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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹