เดเตปเดเตเดฐเดฟ
เดเตเดกเต เดเดซเตเดฑเตเดฑเตผเดจเตเตบ. เด เดฐ เดตเตผเดทเดฎเดพเดฏเดฟ เดเดเตเดเตพ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเตเดเต เดจเดฟเดฒเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต (เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดเตเดเตเดเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ) เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต (เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ). เดเดจเตเดฑเต เดธเตเดทเตเดเดฟ เด เดจเตเดญเดตเดตเตเด เดเตเดกเตเด เดชเดเตเดเดฟเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดตเดฟเดฎเตผเดถเดจเดคเตเดคเดฟเดจเตเด เด เดฎเตเดฑเตเดฑเตเดฐเดฟเดฏเตฝ เดเตผเดเตเดเตเดเตเดเดฟเดฒเตเด เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเดฎเตเดจเตเดจเตเด เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดเดตเดถเตเดฏเดคเตเดคเดฟเดจเตเดฑเต เดฐเตเดชเตเดเดฐเดฃเด
เดเดเตเดเตพเดเตเดเต เดงเดพเดฐเดพเดณเด เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเตพ เดเดฃเตเดเต (เดเดเดฆเตเดถเด 1500 VM-เดเตพ 3 vCenters-เตฝ เดเดเดจเตเดณเด เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต). เดชเตเดคเดฟเดฏเดต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเตเด เดชเดดเดฏเดต เดชเดฒเดชเตเดชเตเดดเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเตเดฐเดฎเด เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต, VM-เดเดณเต เดเดชเดธเดฟเดธเตเดฑเตเดฑเดฎเตเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเดพเดจเตเด เด
เดต เดชเดฐเตเดเตเดทเดฃเดเตเดเดณเดพเดฃเต เดเดจเตเดจเตเด เดเดฐเดฟเดฒเตเดเต, เดเดชเตเดชเตเตพ เดธเตเดทเตเดเดฟเดเตเดเดคเดพเดฃเตเดจเตเดจเตเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต vCenter-เดฒเตเดเตเดเต เดจเดฟเดฐเดตเดงเดฟ เดเดทเตโเดเดพเดจเตเดธเตเดค เดซเตเตฝเดกเตเดเตพ เดเตเตผเดคเตเดคเต. เดฎเดพเดจเตเดทเดฟเด เดเดเดเด เดชเดเตเดคเดฟเดฏเดฟเดฒเดงเดฟเดเด เดฎเตเดทเตเดจเตเดเดณเตเด เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเตเดเดณเดพเตฝ เด
เดตเดถเตเดทเดฟเดเตเดเตเดตเตเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเต, เดเดคเต เดเตเดฒเดฟเดฏเต เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดเตเดเดฟ. เดเดฐเต เดเดฑเตเดฎเดพเดธเดคเตเดคเดฟเดฒเตเดฐเดฟเดเตเดเตฝ, เดเดฐเตเดเตเดเดฟเดฒเตเด เดชเดฐเดฟเดญเตเดฐเดพเดจเตเดคเดฐเดพเดฏเดฟ เด เดกเดพเดฑเตเดฑ เด
เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ, เดชเดเตเดทเต เดเดจเตเดจเดฐ เดเดดเตเดเดฏเตเดเตเดเต เดถเตเดทเด เดซเดฒเด เดชเตเดฐเดธเดเตเดคเดฎเดพเดเตเดจเตเดจเดคเต เด
เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเต.
เดฎเตเดทเตเดจเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ, เด
เดต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดฎเตเดคเดฒเดพเดฏเดต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เดเดฒเตเดฒเดพเดตเดฐเตเด เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดพเตป เดเดเตป เดคเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดเตเดเต. เดเดคเตเดฏเดพเดฆเดฟ. เด
เดคเต เดธเดฎเดฏเด, เดเดฒเตเดฒเดพเดตเดฐเตเด เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเตผเดถเดจเดฎเดพเดฏเดฟ เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต, เดเดฒเตเดฒเดพเด เดเตเดฐเดฎเดคเตเดคเดฟเดฒเดพเดฃเต. เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดตเดฟเดเต เด
เดเตเดเดจเตเดฏเดฒเตเดฒ, เดชเดเตเดทเต เดเดคเต เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดทเดฏเดฎเดฒเตเดฒ :)
เดชเตเดคเตเดตเต, เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเตเดคเตเดฏเดค เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดฏเดพเดจเตเดคเตเดฐเดฟเดเดฎเดพเดเตเดเดพเดจเดพเดฃเต เดคเตเดฐเตเดฎเดพเดจเด.
เดเดฒเตเดฒเดพ เดเดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดณเตเดณ เดเดเตเดเดฟเดจเตเดฏเตผเดฎเดพเตผเดเตเดเตเด เด
เดตเดฐเตเดเต เดฎเตเดฒเดงเดฟเดเดพเดฐเดฟเดเตพเดเตเดเตเด เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดฎเตเดทเตเดจเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดณเตเดณ เดเดฐเต เดฆเตเดจเดเดฆเดฟเดจ เดเดคเตเดคเต เดเดฐเต เดจเดฒเตเดฒ เดคเตเดเดเตเดเดฎเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
เด เดธเดฎเดฏเดคเตเดคเต, เดเดจเตเดฑเต เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเดเดฐเดฟเดฒเตเดฐเดพเตพ PowerShell-เตฝ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏเดฟเดฐเตเดจเตเดจเต, เด เดคเต เดเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด เดเดฐเต เดทเตเดกเตเดฏเตเตพ เด เดจเตเดธเดฐเดฟเดเตเดเต เดเดฒเตเดฒเดพ vCenters-เดฒเตเดฏเตเด เดเดฒเตเดฒเดพ เดฎเตเดทเตเดจเตเดเดณเตเดเตเดฏเตเด เดตเดฟเดตเดฐเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด 3 csv เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ (เดเดฐเตเดจเตเดจเตเด เดธเตเดตเดจเตเดคเด vCenter-เดจเต เดตเตเดฃเตเดเดฟ) เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดกเดฟเดธเตเดเต. เด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดเดเตเดเตเดเดพเดจเตเด เดเดเตเดเตพเดเตเดเต เดเตเดฑเดเตเดเต เด เดจเตเดญเดตเด เดเดณเตเดณ R เดญเดพเดท เดเดชเดฏเตเดเดฟเดเตเดเตเดณเตเดณ เดชเดฐเดฟเดถเตเดงเดจเดเตพเดเตเดเตเดชเตเดชเด เด เดจเตเดฌเดจเตเดงเดฎเดพเดฏเดฟ เดจเตฝเดเดพเดจเตเด เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
เด เดจเตเดคเดฟเดฎเดฎเดพเดเตเดเตฝ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ, เดชเดฐเดฟเดนเดพเดฐเด เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดตเดฟเดตเดฐเดเตเดเตพ เดจเตเดเดฟเดฏเตเดเตเดคเตเดคเต, เดชเตเดฐเดงเดพเดจเดตเตเด เดเดฐเดฟเดคเตเดฐเดชเดฐเดตเตเดฎเดพเดฏ เดชเดเตเดเดฟเดเดฏเตเดณเตเดณ เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต (เดเดคเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต เดเตเดเตเดคเตฝ), เดเตเดเดพเดคเต vM-เดจเตเดฑเต เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดฐเดทเตโเดเดพเดเตเดเดณเตเดฏเตเด เด เดต เดธเตเดทเตโเดเดฟเดเตเด เดธเดฎเดฏเดคเตเดคเตเดฏเตเด เดเดฃเตเดเตเดคเตเดคเดพเตป vSphere เดฒเตเดเตเดเดณเตเดเต เดตเดฟเดถเดเดฒเดจเด.
IDE RStudio Desktop เดเด PowerShell ISE เดเด เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต.
เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดตเดฟเตปเดกเตเดธเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเต.
เดชเตเดคเตเดตเดพเดฏ เดฏเตเดเตเดคเดฟเดฏเตเดเต เดตเดฟเดตเดฐเดฃเด.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเดเต เดชเตเดคเตเดตเดพเดฏ เดฏเตเดเตเดคเดฟ เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต.
- เดเดฐเต เดชเดตเตผเดทเตเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเต เดกเดพเดฑเตเดฑ เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเต เดเดเตเดเตพ R เดฎเตเดเตเดจ เดตเดฟเดณเดฟเดเตเดเตเดเดฏเตเด เดซเดฒเด เดเดฐเต csv เดเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดญเดพเดทเดเตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเดฟเดชเดฐเตเดค เดเดเดชเตเดเตฝ เดธเดฎเดพเดจเดฎเดพเดฏเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเต. (เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ R-เตฝ เดจเดฟเดจเตเดจเต PowerShell-เดฒเตเดเตเดเต เดจเตเดฐเดฟเดเตเดเต เดกเดพเดฑเตเดฑ เดกเตเดฐเตเดตเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฃเต, เดเตเดเดพเดคเต เดเดจเตเดฑเตผเดฎเตเดกเดฟเดฏเดฑเตเดฑเต csvs เดเดณเตเดณเดคเต เดกเตเดฌเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดฎเดฑเตเดฑเตเดฐเดพเดณเตเดฎเดพเดฏเดฟ เดเดจเตเดฑเตผเดฎเตเดกเดฟเดฏเดฑเตเดฑเต เดซเดฒเดเตเดเตพ เดชเดเตเดเดฟเดเดพเดจเตเด เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเดจเตเดจเต).
- R เดเดชเดฏเตเดเดฟเดเตเดเต, เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจ เดฎเตเดฒเตเดฏเดเตเดเดณเตเดเต เดซเตเตฝเดกเตเดเตพเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดธเดพเดงเตเดตเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเต. - เดตเดฟเดตเดฐ เดเดคเตเดคเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด เดซเตเตฝเดกเตเดเดณเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจ เดเดฐเต เดตเตเดกเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเต เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต "เดเดฒเตเดฒ, เดชเดเตเดทเต เดเดพเตป เดเดคเต เดเดเตเดเดจเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเดฃเด?" เดเดจเตเดจ เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเดเดฐเตเดเต เดเตเดฆเตเดฏเดเตเดเตพเดเตเดเตเดณเตเดณ เดเดคเตเดคเดฐเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
- R เดเดชเดฏเตเดเดฟเดเตเดเต csv-เตฝ เดจเดฟเดจเตเดจเต เดเดฒเตเดฒเดพ VM-เดเตพเดเตเดเตเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดเดเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดฐเต เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเต, เด เดจเดพเดตเดถเตเดฏ เดซเตเตฝเดกเตเดเตพ เดจเตเดเตเดเดเดเตเดฏเตเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดฒเตเดฒเดพ VM-เดเตพเดเตเดเตเดฎเดพเดฏเตเดณเตเดณ เดธเดเดเตเดฐเดน เดตเดฟเดตเดฐเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจ เดเดฐเต เดตเดฟเดตเดฐ xlsx เดชเตเดฐเดฎเดพเดฃเด เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดเตเดเตพ เดชเดเตเดเดฟเดเตเด เดเดฐเต เดเดฑเดตเดฟเดเดคเตเดคเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
- เดเดฒเตเดฒเดพ VM-เดเตพเดเตเดเตเดฎเดพเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเดฎเดฟเดฒเตเดเตเดเต เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเตเดคเตเดฏเดคเดฏเตเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดเดฒเตเดฒเดพ เดชเดฐเดฟเดถเตเดงเดจเดเดณเตเด เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดซเตเตฝเดกเตเดเดณเตเดณเตเดณ (เด เดซเตเตฝเดกเตเดเตพ เดฎเดพเดคเตเดฐเด) VM-เดเตพ เดฎเดพเดคเตเดฐเด เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจ เดเดฐเต เดชเดเตเดเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
- เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ VM-เดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดเตเดเตพ เดฎเดฑเตเดฑเตเดฐเต PowerShell เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตโเดเตเดเตเดจเตเดจเต, เด เดคเต VM เดธเตเดทเตโเดเดฟเดเตเดเตฝ เดเดตเดจเตเดฑเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ vCenter เดฒเตเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด, เดเดคเต VM-เดจเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเดฒเดฟเดจเตเดฑเตเดฏเตเด เดเดฆเตเดฆเตเดถเดฟเดเตเด เดธเตเดฐเดทเตโเดเดพเดตเดฟเดจเตเดฑเตเดฏเตเด เดเดฃเดเตเดเดพเดเตเดเดฟเดฏ เดธเดฎเดฏเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด. เดเดคเต เดเดฐเตเดเต เดเดพเดฑเดพเดฃเตเดจเตเดจเต เดเดฐเตเด เดธเดฎเตเดฎเดคเดฟเดเตเดเดพเดคเตเดค เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเดฒเดพเดฃเต เดเดคเต. เด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดตเตเดเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เดงเดพเดฐเดพเดณเด เดฒเตเดเตเดเตพ เดเดฃเตเดเตเดเตเดเดฟเตฝ, เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดเดดเดฟเดเตเด 2 เดเดดเตโเดเดเตพ เดฎเดพเดคเตเดฐเด เดจเตเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเดฐเต เดธเดฎเดฏเด เดจเดฟเดฐเดตเดงเดฟ VM-เดเดณเดฟเดฒเต เดตเดฟเดตเดฐเดเตเดเตพเดเตเดเดพเดฏเดฟ เดคเดฟเดฐเดฏเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดตเตผเดเตเดเตเดซเตเดฒเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดฆเดพเดนเดฐเดฃ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เด เดฎเตเดเตเดเดพเดจเดฟเดธเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เด เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเตพ เดซเดฒเด เดเดฐเต csv-เดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต, เด เดคเต เดตเตเดฃเตเดเตเด R-เดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
- เดเดเตเดเตพ เดฎเดจเตเดนเดฐเดฎเดพเดฏเดฟ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเตเดฏเตโเดค xlsx เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเตฝ เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดซเตเตฝเดกเตเดเตพ เดเตเดตเดชเตเดชเต เดจเดฟเดฑเดคเตเดคเดฟเตฝ เดนเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด, เดเดฟเดฒ เดเตเดณเดเตเดเดณเดฟเตฝ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเด, เดเตเดเดพเดคเต เดเดฆเตเดฆเตเดถเดฟเดเตเด เดธเตเดฐเดทเตโเดเดพเดเตเดเดณเตเด VM เดธเตเดทเตโเดเดฟเดเตเด เดธเดฎเดฏเดตเตเด เด เดเดเตเดเตเดจเตเดจ เด เดงเดฟเด เดเตเดณเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเด.
- เดเดเตเดเตพ เดเดฐเต เดเดฎเตเดฏเดฟเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดฟเดเต เดเดเตเดเตพ เดธเดพเดงเตเดตเดพเดฏ เดซเตเตฝเดกเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเด เดซเตเตฝเดกเตเดเดณเดฟเตฝ เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดเดฐเต เดชเดเตเดเดฟเดเดฏเตเด เด เดฑเตเดฑเดพเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเต. เดคเตเดฑเตเดฑเดพเดฏเดฟ เดธเตเดทเตโเดเดฟเดเตเด VM-เดเดณเตเดเต เดเดเต เดเดฃเตเดฃเด, เดชเดเตเดเดฟเดเตเด เดเดฑเดตเดฟเดเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฒเดฟเดเตเดเต, เดชเตเดฐเดเตเดฆเดจเดพเดคเตเดฎเด เดเดฟเดคเตเดฐเด เดเดจเตเดจเดฟเดต เดตเดพเดเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด VM-เดเตพ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดธเดจเตเดคเตเดทเดเดฐเดฎเดพเดฏ เดเดฐเต เดชเตเดฐเดเตเดฆเดจเดพเดคเตเดฎเด เดเดฟเดคเตเดฐเดตเตเดฎเดพเดฏเดฟ เดเดเตเดเตพ เดฎเดฑเตเดฑเตเดฐเต เดเดคเตเดคเต เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต.
- เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดชเดเตเดเดฟเดเดเดณเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏ เดธเดเดตเดฟเดงเดพเดจเด เดเดฃเดเตเดเดฟเดฒเตเดเตเดคเตเดคเต เดเดเตเดเตพ SQL เดธเตเตผเดตเตผ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเต เดเดฒเตเดฒเดพ เดตเดฟเดเดฎเตเดฎเตเดเตพเดเตเดเตเดฎเดพเดฏเดฟ เดกเดพเดฑเตเดฑ เดฑเตเดเตเดเตเตผเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเต (เดตเดณเดฐเต เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฐเต เดธเดเดตเดฟเดงเดพเดจเด - เด เดคเดฟเดจเต เดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดชเดฟเดจเตเดจเตเดเต)
เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ
เดชเตเดฐเดงเดพเดจ R เดเตเดกเต เดซเดฏเตฝ
# ะััั ะบ ัะฐะฑะพัะตะน ะดะธัะตะบัะพัะธะธ (ะฝัะถะฝะพ ะดะปั ะบะพััะตะบัะฝะพะน ัะฐะฑะพัั ัะตัะตะท ะฒะธะฝะดะพะฒัะน ะฟะปะฐะฝะธัะพะฒัะธะบ ะทะฐะดะฐะฝะธะน)
setwd("C:ScriptsgetVm")
#### ะะพะดะณััะถะฐะตะผ ะฝะตะพะฑั
ะพะดะธะผัะต ะฟะฐะบะตัั ####
library(tidyverse)
library(xlsx)
library(mailR)
library(rmarkdown)
##### ะะฟัะตะดะตะปัะตะผ ะฟััะธ ะบ ะธัั
ะพะดะฝัะผ ัะฐะนะปะฐะผ ะธ ะดััะณะธะต ะฟะตัะตะผะตะฝะฝัะต #####
source(file = "const.R", local = T, encoding = "utf-8")
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ ัะพ ะฒัะตะผะธ ะะ ะธ ัะดะฐะปัะตะผ, ะตัะปะธ ะตััั.
if (file.exists(filenameVmCreationRules)) {file.remove(filenameVmCreationRules)}
#### ะกะพะทะดะฐัะผ ะฒะพัะดะพะฒัะบะธะน ะดะพะบัะผะตะฝั ั ะดะพะฟัััะธะผัะผะธ ะฟะพะปัะผะธ
render("VM_name_rules.Rmd",
output_format = word_document(),
output_file = filenameVmCreationRules)
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ ัะพ ะฒัะตะผะธ ะะ ะธ ัะดะฐะปัะตะผ, ะตัะปะธ ะตััั
if (file.exists(allVmXlsxPath)) {file.remove(allVmXlsxPath)}
#### ะะฐะฑะธัะฐะตะผ ะดะฐะฝะฝัะต ะฟะพ ะฒัะตะผ ะผะฐัะธะฝะฐะผ ัะตัะตะท PowerShell ัะบัะธะฟั. ะะฐ ะฒัั
ะพะดะต ะฟะพะปััะธะผ csv.
system(paste0("powershell -File ", getVmPsPath))
# ะะพะปะฝัะน df
fullXslx_df <- allVmXlsxPath %>%
read.csv2(stringsAsFactors = FALSE)
# ะัะพะฒะตััะตะผ ะบะพััะตะบัะฝะพััั ะทะฐะฟะพะปะฝะตะฝะฝัั
ะฟะพะปะตะน
full_df <- fullXslx_df %>%
mutate(
# ะกะฝะฐัะฐะปะฐ ัะฑะธัะฐะตะผ ะฒัะต ะปะธัะฝะธะต ะฟัะพะฑะตะปั ะธ ัะฐะฑัะปััะธะธ, ะฟะพัะพะผ ััะธััะฒะฐะตะผ ัะฐะทะดะตะปะธัะตะปั ะทะฐะฟัััั, ะฟะพัะพะผ ะฟัะพะฒะตััะตะผ ะฒั
ะพะถะดะตะฝะธะต ะฒ ะดะพะฟัััะธะผัะต ะทะฝะฐัะตะฝะธั,
isSubsystemCorrect = Subsystem %>%
gsub("[[:space:]]", "", .) %>%
str_split(., ",") %>%
map(function(x) (all(x %in% AllowedValues$Subsystem))) %>%
as.logical(),
isOwnerCorrect = Owner %in% AllowedValues$Owner,
isCategoryCorrect = Category %in% AllowedValues$Category,
isCreatorCorrect = (!is.na(Creator) & Creator != ''),
isCreation.DateCorrect = map(Creation.Date, IsDate)
)
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ ัะพ ะฒัะตะผะธ ะะ ะธ ัะดะฐะปัะตะผ, ะตัะปะธ ะตััั.
if (file.exists(filenameAll)) {file.remove(filenameAll)}
#### ะคะพัะผะธััะตะผ xslx ัะฐะนะป ั ะพััััะพะผ ####
# ะะฑัะธะต ะดะฐะฝะฝัะต ะฝะฐ ะพัะดะตะปัะฝัะน ะปะธัั
full_df %>% write.xlsx(file=filenameAll,
sheetName=names[1],
col.names=TRUE,
row.names=FALSE,
append=FALSE)
#### ะคะพัะผะธััะตะผ xslx ัะฐะนะป ั ะฝะตะฟัะฐะฒะธะปัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะผะธ ะฟะพะปัะผะธ ####
# ะคะพัะผะธััะตะผ df
incorrect_df <- full_df %>%
select(VM.Name,
IP.s,
Owner,
Subsystem,
Creator,
Category,
Creation.Date,
isOwnerCorrect,
isSubsystemCorrect,
isCategoryCorrect,
isCreatorCorrect,
vCenter.Name) %>%
filter(isSubsystemCorrect == F |
isOwnerCorrect == F |
isCategoryCorrect == F |
isCreatorCorrect == F)
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ ัะพ ะฒัะตะผะธ ะะ ะธ ัะดะฐะปัะตะผ, ะตัะปะธ ะตััั.
if (file.exists(filenameIncVM)) {file.remove(filenameIncVM)}
# ะกะพั
ัะฐะฝัะตะผ ัะฟะธัะพะบ VM ั ะฝะตะทะฐะฟะพะปะฝะตะฝะฝัะผะธ ะฟะพะปัะผะธ ะฒ csv
incorrect_df %>%
select(VM.Name) %>%
write_csv2(path = filenameIncVM, append = FALSE)
# ะคะธะปััััะตะผ ะดะปั ะฒััะฐะฒะบะธ ะฒ ะฟะพััั
incorrect_df_filtered <- incorrect_df %>%
select(VM.Name,
IP.s,
Owner,
Subsystem,
Category,
Creator,
vCenter.Name,
Creation.Date
)
# ะกัะธัะฐะตะผ ะบะพะปะธัะตััะฒะพ ัััะพะบ
numberOfRows <- nrow(incorrect_df)
#### ะะฐัะฐะปะพ ััะปะพะฒะธั ####
# ะะฐะปััะต ะปะธะฑะพ ั ะฝะฐั ะตััั ะฝะตะฟัะฐะฒะธะปัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะต ะฟะพะปั, ะปะธะฑะพ ะฝะตั.
# ะัะปะธ ะตััั - ะทะฐะฟััะบะฐะตะผ ะตัั ะพะดะธะฝ ัะบัะธะฟั
if (numberOfRows > 0) {
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ ั ัะพะทะดะฐัะตะปัะผะธ ะธ ัะดะฐะปัะตะผ, ะตัะปะธ ะตััั.
if (file.exists(creatorsFilePath)) {file.remove(creatorsFilePath)}
# ะะฐะฟััะบะฐะตะผ PowerShell ัะบัะธะฟั, ะบะพัะพััะน ะฝะฐะนะดัั ัะพะทะดะฐัะตะปะตะน ะฝะฐะนะดะตะฝะฝัั
VM. ะะฐ ะฒัั
ะพะดะต ะฟะพะปััะธะผ csv.
system(paste0("powershell -File ", getCreatorsPath))
# ะงะธัะฐะตะผ ัะฐะนะป ั ัะพะทะดะฐัะตะปัะผะธ
creators_df <- creatorsFilePath %>%
read.csv2(stringsAsFactors = FALSE)
# ะคะธะปััััะตะผ ะดะปั ะฒััะฐะฒะบะธ ะฒ ะฟะพััั, ะดะพะฑะฐะฒะปัะตะผ ะดะฐะฝะฝัะต ะธะท ัะฐะฑะปะธัั ั ัะพะทะดะฐัะตะปัะผะธ
incorrect_df_filtered <- incorrect_df_filtered %>%
select(VM.Name,
IP.s,
Owner,
Subsystem,
Category,
Creator,
vCenter.Name,
Creation.Date
) %>%
left_join(creators_df, by = "VM.Name") %>%
rename(`ะัะตะดะฟะพะปะฐะณะฐะตะผัะน ัะพะทะดะฐัะตะปั` = CreatedBy,
`ะัะตะดะฟะพะปะฐะณะฐะตะผะฐั ะดะฐัะฐ ัะพะทะดะฐะฝะธั` = CreatedOn)
# ะคะพัะผะธััะตะผ ัะตะปะพ ะฟะธััะผะฐ
emailBody <- paste0(
'<html>
<h3>ะะพะฑััะน ะดะตะฝั, ัะฒะฐะถะฐะตะผัะต ะบะพะปะปะตะณะธ.</h3>
<p>ะะพะปะฝัั ะฐะบััะฐะปัะฝัั ะธะฝัะพัะผะฐัะธั ะฟะพ ะฒะธัััะฐะปัะฝัะผ ะผะฐัะธะฝะฐะผ ะฒั ะผะพะถะตัะต ะฟะพัะผะพััะตัั ะฝะฐ ะดะธัะบะต H: ะฒะพั ััั:<p>
<p>\server.ruVM', sourceFileFormat, '</p>
<p>ะขะฐะบะถะต ะฒะพ ะฒะปะพะถะตะฝะธะธ ัะฟะธัะพะบ ะะ ั <strong>ะฝะตะบะพััะตะบัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะผะธ</strong> ะฟะพะปัะผะธ. ะัะตะณะพ ะธั
<strong>', numberOfRows,'</strong>.</p>
<p>ะ ัะฐะฑะปะธัะต ะฟะพัะฒะธะปะพัั 2 ะดะพะฟะพะปะฝะธัะตะปัะฝัะต ะบะพะปะพะฝะบะธ. <strong>ะัะตะดะฟะพะปะฐะณะฐะตะผัะน ัะพะทะดะฐัะตะปั</strong> ะธ <strong>ะัะตะดะฟะพะปะฐะณะฐะตะผะฐั ะดะฐัะฐ ัะพะทะดะฐะฝะธั</strong>, ะบะพัะพััะต ะดะพััะฐัััั ะธะท ะปะพะณะพะฒ vCenter ะทะฐ ะฟะพัะปะตะดะฝะธะต 2 ะฝะตะดะตะปะธ</p>
<p>ะัะพััะฑะฐ ัะพะทะดะฐัะตะปะตะน ะผะฐัะธะฝ ััะพัะฝะธัั ะดะฐะฝะฝัะต ะธ ะทะฐะฟะพะปะฝะธัั ะฟะพะปั ะบะพััะตะบัะฝะพ. ะัะฐะฒะธะปะฐ ะทะฐะฟะพะปะฝะตะฝะธั ะฟะพะปะตะน ัะฐะบะถะต ะฒะพ ะฒะปะพะถะตะฝะธะธ</p>
<p><img src="data/meme.jpg"></p>
</html>'
)
# ะัะพะฒะตััะตะผ ัััะตััะฒะพะฒะฐะฝะธะต ัะฐะนะปะฐ
if (file.exists(filenameIncorrect)) {file.remove(filenameIncorrect)}
# ะคะพัะผะธััะตะผ ะบัะฐัะธะฒัั ัะฐะฑะปะธัั ั ัะพัะผะฐัะฐะผะธ ะธ ั.ะด.
source(file = "email.R", local = T, encoding = "utf-8")
#### ะคะพัะผะธััะตะผ ะฟะธััะผะพ ั ะฟะปะพั
ะพ ะฟะพะดะฟะธัะฐะฝะฝัะผะธ ะผะฐัะธะฝะฐะผะธ ####
send.mail(from = emailParams$from,
to = emailParams$to,
subject = "ะะ ั ะฝะตะบะพััะตะบัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะผะธ ะฟะพะปัะผะธ",
body = emailBody,
encoding = "utf-8",
html = TRUE,
inline = TRUE,
smtp = emailParams$smtpParams,
authenticate = TRUE,
send = TRUE,
attach.files = c(filenameIncorrect, filenameVmCreationRules),
debug = FALSE)
#### ะะฐะปััะต ะฟะพะนะดัั ะฑะปะพะบ, ะตัะปะธ ะฝะตั ะฟัะพะฑะปะตะผ ั ะะ ####
} else {
# ะคะพัะผะธััะตะผ ัะตะปะพ ะฟะธััะผะฐ
emailBody <- paste0(
'<html>
<h3>ะะพะฑััะน ะดะตะฝั, ัะฒะฐะถะฐะตะผัะต ะบะพะปะปะตะณะธ</h3>
<p>ะะพะปะฝัั ะฐะบััะฐะปัะฝัั ะธะฝัะพัะผะฐัะธั ะฟะพ ะฒะธัััะฐะปัะฝัะผ ะผะฐัะธะฝะฐะผ ะฒั ะผะพะถะตัะต ะฟะพัะผะพััะตัั ะฝะฐ ะดะธัะบะต H: ะฒะพั ััั:<p>
<p>\server.ruVM', sourceFileFormat, '</p>
<p>ะขะฐะบะถะต, ะฝะฐ ัะตะบััะธะน ะผะพะผะตะฝั, ะฒัะต ะฟะพะปั ะะ ะบะพััะตะบัะฝะพ ะทะฐะฟะพะปะฝะตะฝั</p>
<p><img src="data/meme_correct.jpg"></p>
</html>'
)
#### ะคะพัะผะธััะตะผ ะฟะธััะผะพ ะฑะตะท ะฟะปะพั
ะพ ะทะฐะฟะพะปะฝะตะฝะฝัั
VM ####
send.mail(from = emailParams$from,
to = emailParams$to,
subject = "ะกะฒะพะดะฝะฐั ะธะฝัะพัะผะฐัะธั",
body = emailBody,
encoding = "utf-8",
html = TRUE,
inline = TRUE,
smtp = emailParams$smtpParams,
authenticate = TRUE,
send = TRUE,
debug = FALSE)
}
####### ะะฐะฟะธััะฒะฐะตะผ ะดะฐะฝะฝัะต ะฒ ะะ #####
source(file = "DB.R", local = T, encoding = "utf-8")
PowerShell-เตฝ vm-เดจเตเดฑเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
# ะะฐะฝะฝัะต ะดะปั ะฟะพะดะบะปััะตะฝะธั ะธ ะดััะณะธะต ะฟะตัะตะผะตะฝะฝัะต
$vCenterNames = @(
"vcenter01",
"vcenter02",
"vcenter03"
)
$vCenterUsername = "myusername"
$vCenterPassword = "mypassword"
$filename = "C:ScriptsgetVmdataallvmall-vm-$(get-date -f yyyy-MM-dd).csv"
$destinationSMB = "server.rumyfolder$vm"
$IP0=""
$IP1=""
$IP2=""
$IP3=""
$IP4=""
$IP5=""
# ะะพะดะบะปััะตะฝะธะต ะบะพ ะฒัะตะผ vCenter, ััะพ ัะพะดะตัะถะฐััั ะฒ ะฟะตัะตะผะตะฝะฝะพะน. ะัะดะตั ัะฐะฑะพัะฐัั, ะตัะปะธ ะปะพะณะธะฝ ะธ ะฟะฐัะพะปั ะพะดะธะฝะฐะบะพะฒัะต (ะฝะฐะฟัะธะผะตั, ะดะพะผะตะฝะฝัะต)
Connect-VIServer -Server $vCenterNames -User $vCenterUsername -Password $vCenterPassword
write-host ""
# ะกะพะทะดะฐัะผ ััะฝะบัะธั ั ัะธะบะปะพะผ ะฟะพ ะฒัะตะผ vCenter-ะฐะผ
function Get-VMinventory {
# ะ ััะพะน ะฟะตัะตะผะตะฝะฝะพะน ะฑัะดะตั ัะฟะธัะบะพ ะฒัะตั
ะะ, ะบะฐะบ ะพะฑัะตะบัะพะฒ
$AllVM = Get-VM | Sort Name
$cnt = $AllVM.Count
$count = 1
# ะะฐัะธะฝะฐะตะผ ัะธะบะป ะฟะพ ะฒัะตะผ ะะ ะธ ัะพะฑะธัะฐะตะผ ะฝะตะพะฑั
ะพะดะธะผัะต ะฟะฐัะฐะผะตััั ะบะฐะถะดะพะณะพ ะพะฑัะตะบัะฐ
foreach ($vm in $AllVM) {
$StartTime = $(get-date)
$IP0 = $vm.Guest.IPAddress[0]
$IP1 = $vm.Guest.IPAddress[1]
$IP2 = $vm.Guest.IPAddress[2]
$IP3 = $vm.Guest.IPAddress[3]
$IP4 = $vm.Guest.IPAddress[4]
$IP5 = $vm.Guest.IPAddress[5]
If ($IP0 -ne $null) {If ($IP0.Contains(":") -ne 0) {$IP0=""}}
If ($IP1 -ne $null) {If ($IP1.Contains(":") -ne 0) {$IP1=""}}
If ($IP2 -ne $null) {If ($IP2.Contains(":") -ne 0) {$IP2=""}}
If ($IP3 -ne $null) {If ($IP3.Contains(":") -ne 0) {$IP3=""}}
If ($IP4 -ne $null) {If ($IP4.Contains(":") -ne 0) {$IP4=""}}
If ($IP5 -ne $null) {If ($IP5.Contains(":") -ne 0) {$IP5=""}}
$cluster = $vm | Get-Cluster | Select-Object -ExpandProperty name
$Bootime = $vm.ExtensionData.Runtime.BootTime
$TotalHDDs = $vm.ProvisionedSpaceGB -as [int]
$CreationDate = $vm.CustomFields.Item("CreationDate") -as [string]
$Creator = $vm.CustomFields.Item("Creator") -as [string]
$Category = $vm.CustomFields.Item("Category") -as [string]
$Owner = $vm.CustomFields.Item("Owner") -as [string]
$Subsystem = $vm.CustomFields.Item("Subsystem") -as [string]
$IPS = $vm.CustomFields.Item("IP") -as [string]
$vCPU = $vm.NumCpu
$CorePerSocket = $vm.ExtensionData.config.hardware.NumCoresPerSocket
$Sockets = $vCPU/$CorePerSocket
$Id = $vm.Id.Split('-')[2] -as [int]
# ะกะพะฑะธัะฐะตะผ ะฒัะต ะฟะฐัะฐะผะตััั ะฒ ะพะดะธะฝ ะพะฑัะตะบั
$Vmresult = New-Object PSObject
$Vmresult | add-member -MemberType NoteProperty -Name "Id" -Value $Id
$Vmresult | add-member -MemberType NoteProperty -Name "VM Name" -Value $vm.Name
$Vmresult | add-member -MemberType NoteProperty -Name "Cluster" -Value $cluster
$Vmresult | add-member -MemberType NoteProperty -Name "Esxi Host" -Value $VM.VMHost
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 1" -Value $IP0
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 2" -Value $IP1
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 3" -Value $IP2
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 4" -Value $IP3
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 5" -Value $IP4
$Vmresult | add-member -MemberType NoteProperty -Name "IP Address 6" -Value $IP5
$Vmresult | add-member -MemberType NoteProperty -Name "vCPU" -Value $vCPU
$Vmresult | Add-Member -MemberType NoteProperty -Name "CPU Sockets" -Value $Sockets
$Vmresult | Add-Member -MemberType NoteProperty -Name "Core per Socket" -Value $CorePerSocket
$Vmresult | add-member -MemberType NoteProperty -Name "RAM (GB)" -Value $vm.MemoryGB
$Vmresult | add-member -MemberType NoteProperty -Name "Total-HDD (GB)" -Value $TotalHDDs
$Vmresult | add-member -MemberType NoteProperty -Name "Power State" -Value $vm.PowerState
$Vmresult | add-member -MemberType NoteProperty -Name "OS" -Value $VM.ExtensionData.summary.config.guestfullname
$Vmresult | Add-Member -MemberType NoteProperty -Name "Boot Time" -Value $Bootime
$Vmresult | add-member -MemberType NoteProperty -Name "VMTools Status" -Value $vm.ExtensionData.Guest.ToolsStatus
$Vmresult | add-member -MemberType NoteProperty -Name "VMTools Version" -Value $vm.ExtensionData.Guest.ToolsVersion
$Vmresult | add-member -MemberType NoteProperty -Name "VMTools Version Status" -Value $vm.ExtensionData.Guest.ToolsVersionStatus
$Vmresult | add-member -MemberType NoteProperty -Name "VMTools Running Status" -Value $vm.ExtensionData.Guest.ToolsRunningStatus
$Vmresult | add-member -MemberType NoteProperty -Name "Creation Date" -Value $CreationDate
$Vmresult | add-member -MemberType NoteProperty -Name "Creator" -Value $Creator
$Vmresult | add-member -MemberType NoteProperty -Name "Category" -Value $Category
$Vmresult | add-member -MemberType NoteProperty -Name "Owner" -Value $Owner
$Vmresult | add-member -MemberType NoteProperty -Name "Subsystem" -Value $Subsystem
$Vmresult | add-member -MemberType NoteProperty -Name "IP's" -Value $IPS
$Vmresult | add-member -MemberType NoteProperty -Name "vCenter Name" -Value $vm.Uid.Split('@')[1].Split(':')[0]
# ะกัะธัะฐะตะผ ะพะฑัะตะต ะธ ะพััะฐะฒัะตะตัั ะฒัะตะผั ะฒัะฟะพะปะฝะตะฝะธั ะธ ะฒัะฒะพะดะธะผ ะฝะฐ ัะบัะฐะฝ ัะตะทัะปััะฐัั. ะัะฟะพะปัะทะพะฒะฐะปะพัั ะดะปั ัะตััะธัะพะฒะฐะฝะธั, ะฝะพ ะฟะพ ัะฐะบัั ะพะบะฐะทะฐะปะพัั ะพัะตะฝั ัะดะพะฑะฝะพ.
$elapsedTime = $(get-date) - $StartTime
$totalTime = "{0:HH:mm:ss}" -f ([datetime]($elapsedTime.Ticks*($cnt - $count)))
clear-host
Write-Host "Processing" $count "from" $cnt
Write-host "Progress:" ([math]::Round($count/$cnt*100, 2)) "%"
Write-host "You have about " $totalTime "for cofee"
Write-host ""
$count++
# ะัะฒะพะดะธะผ ัะตะทัะปััะฐั, ััะพะฑั ัะธะบะป "ะทะฝะฐะป" ััะพ ัะฒะปัะตััั ัะตะทัะปััะฐัะพะผ ะฒัะฟะพะปะฝะตะฝะธั ะพะดะฝะพะณะพ ะฟัะพั
ะพะดะฐ
$Vmresult
}
}
# ะัะทัะฒะฐะตะผ ะฟะพะปััะธะฒััััั ััะฝะบัะธั ะธ ััะฐะทั ะฒัะณััะถะฐะตะผ ัะตะทัะปััะฐั ะฒ csv
$allVm = Get-VMinventory | Export-CSV -Path $filename -NoTypeInformation -UseCulture -Force
# ะััะฐะตะผัั ะฒัะปะพะถะธัั ะฟะพะปััะตะฝะฝัะน ัะฐะนะป ะฒ ะฝัะถะฝะพะต ะฝะฐะผ ะผะตััะพ ะธ, ะฒ ัะปััะฐะต ะพัะธะฑะบะธ, ะฟะธัะตะผ ะปะพะณ.
try
{
Copy-Item $filename -Destination $destinationSMB -Force -ErrorAction SilentlyContinue
}
catch
{
$error | Export-CSV -Path $filename".error" -NoTypeInformation -UseCulture -Force
}
เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเตเดเต เดธเตเดฐเดทเตโเดเดพเดเตเดเดณเตเดฏเตเด เด เดต เดธเตเดทเตโเดเดฟเดเตเด เดคเตเดฏเดคเดฟเดฏเตเดฏเตเด เดฒเตเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเตเดเตเดเตเดเตเดจเตเดจ เดเดฐเต เดชเดตเตผเดทเตเตฝ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
# ะััั ะบ ัะฐะนะปั, ะธะท ะบะพัะพัะพะณะพ ะฑัะดะตะผ ะดะพััะฐะฒะฐัั ัะฟะธัะพะบ VM
$VMfilePath = "C:ScriptsgetVmcreators_VMcreators_VM_$(get-date -f yyyy-MM-dd).csv"
# ะััั ะบ ัะฐะนะปั, ะฒ ะบะพัะพััะน ะฑัะดะตะผ ะทะฐะฟะธััะฒะฐัั ัะตะทัะปััะฐั
$filePath = "C:ScriptsgetVmdatacreatorscreators-$(get-date -f yyyy-MM-dd).csv"
# ะกะพะทะดะฐัะผ ะฒะพะบััะปะพั
Workflow GetCreators-Wf
{
# ะะฐัะฐะผะตััั, ะบะพัะพััะต ะผะพะถะฝะพ ะฑัะดะตั ะฟะตัะตะดะฐัั ะฟัะธ ะฒัะทะพะฒะต ัะบัะธะฟัะฐ
param([string[]]$VMfilePath)
# ะะฐัะฐะผะตััั, ะบะพัะพััะต ะดะพัััะฟะฝั ัะพะปัะบะพ ะฒะฝัััะธ workflow
$vCenterUsername = "myusername"
$vCenterPassword = "mypassword"
$daysToLook = 14
$start = (get-date).AddDays(-$daysToLook)
$finish = get-date
# ะะฝะฐัะตะฝะธั, ะบะพัะพััะต ะฑัะดัั ะฒะฟะธัะฐะฝั ะฒ csv ะดะปั ะผะฐัะธะฝ, ะฟะพ ะบะพัะพััะผ ะฝะต ะฑัะดะตั ะฝะธัะตะณะพ ะฝะฐะนะดะตะฝะพ
$UnknownUser = "UNKNOWN"
$UnknownCreatedTime = "0000-00-00"
# ะะฟัะตะดะตะปัะตะผ ะฟะฐัะฐะผะตััั ะฟะพะดะบะปััะตะฝะธั ะธ ะฒัะฒะพะดะฝะพะน ัะฐะนะป, ะบะพัะพััะต ะฑัะดัั ะดะพัััะฟะฝั ะฒะพ ะฒััะผ ัะบัะธะฟัะต.
$vCenterNames = @(
"vcenter01",
"vcenter02",
"vcenter03"
)
# ะะพะปััะฐะตะผ ัะฟะธัะพะบ VM ะธะท csv ะธ ะทะฐะณััะถะฐะตะผ ัะพะพัะฒะตัััะฒัััะธะต ะพะฑัะตะบัั
$list = Import-Csv $VMfilePath -UseCulture | select -ExpandProperty VM.Name
# ะฆะธะบะป, ะบะพัะพััะน ะฑัะดะตั ะฒัะฟะพะปะฝััััั ะฟะฐัะฐะปะปะตะปัะฝะพ (ะฟะพ 5 ะผะฐัะธะฝ ะทะฐ ัะฐะท)
foreach -parallel ($row in $list)
{
# ะญัะพ ัะบัะธะฟั, ะบะพัะพััะน ะฒะธะดะธั ัะพะปัะบะพ ัะฒะพะธ ะฟะตัะตะผะตะฝะฝัะต ะธ ัะต, ะบะพัะพััะต ะตะผั ะฟะตัะตะดะฐะฝั ัะตัะตะท $Using
InlineScript {
# ะัะตะผั ะฝะฐัะฐะปะฐ ะฒัะฟะพะปะฝะตะฝะธั ะพัะดะตะปัะฝะพะณะพ ะฑะปะพะบะฐ
$StartTime = $(get-date)
Write-Host ""
Write-Host "Processing $Using:row started at $StartTime"
Write-Host ""
# ะะพะดะบะปััะตะฝะธะต ะพะฑะพัะฐัะธะฒะฐะตะผ ะฒ ะฟะตัะตะผะตะฝะฝัั, ััะพะฑั ะธะฝัะพัะผะฐัะธั ะพ ะฝัะผ ะฝะต ะผะตัะฐะปะฐัั ะฒ ะบะพะฝัะพะปะธ
$con = Connect-VIServer -Server $Using:vCenterNames -User $Using:vCenterUsername -Password $Using:vCenterPassword
# ะะพะปััะฐะตะผ ะพะฑัะตะบั vm
$vm = Get-VM -Name $Using:row
# ะะธะถะต 2 ะพะดะธะฝะฐะบะพะฒัะต ะบะพะผะฐะฝะดั. ะะดะฝะฐ ั ัะธะปัััะพะผ ะฟะพ ะฒัะตะผะตะฝะธ, ะฒัะพัะฐั - ะฑะตะท. ะะพะถะฝะพ ะฟะพะปัะทะพะฒะฐัััั ัะตะผ,
$Event = $vm | Get-VIEvent -Start $Using:start -Finish $Using:finish -Types Info | Where { $_.Gettype().Name -eq "VmBeingDeployedEvent" -or $_.Gettype().Name -eq "VmCreatedEvent" -or $_.Gettype().Name -eq "VmRegisteredEvent" -or $_.Gettype().Name -eq "VmClonedEvent"}
# $Event = $vm | Get-VIEvent -Types Info | Where { $_.Gettype().Name -eq "VmBeingDeployedEvent" -or $_.Gettype().Name -eq "VmCreatedEvent" -or $_.Gettype().Name -eq "VmRegisteredEvent" -or $_.Gettype().Name -eq "VmClonedEvent"}
# ะะฐะฟะพะปะฝัะตะผ ะฟะฐัะฐะผะตััั ะฒ ะทะฐะฒะธัะธะผะพััะธ ะพั ัะพะณะพ, ัะดะฐะปะพัั ะปะธ ะฒ ะปะพะณะฐั
ะฝะฐะนัะธ ััะพ-ัะพ
If (($Event | Measure-Object).Count -eq 0){
$User = $Using:UnknownUser
$Created = $Using:UnknownCreatedTime
$CreatedFormat = $Using:UnknownCreatedTime
} Else {
If ($Event.Username -eq "" -or $Event.Username -eq $null) {
$User = $Using:UnknownUser
} Else {
$User = $Event.Username
} # Else
$CreatedFormat = $Event.CreatedTime
# ะะดะธะฝ ะธะท ะบะพะปะปะตะณ ะพัะดะตะปัะฝะพ ะฟัะพัะธะป, ััะพะฑั ะฒัะตะผั ะฑัะปะพ ะฒ ัะฐะบะพะผ ัะพัะผะฐัะต, ะฟะพััะพะผั ะดัะฑะปะธััะตะผ ะตะณะพ. ะ ะฒ ะะ ะฟะพะนะดัั ะฝะพัะผะฐะปัะฝัะน ัะพัะผะฐั.
$Created = $Event.CreatedTime.ToString('yyyy-MM-dd')
} # Else
Write-Host "Creator for $vm is $User. Creating object."
# ะกะพะทะดะฐัะผ ะพะฑัะตะบั. ะะพะฑะฐะฒะปัะตะผ ะฟะฐัะฐะผะตััั.
$Vmresult = New-Object PSObject
$Vmresult | add-member -MemberType NoteProperty -Name "VM Name" -Value $vm.Name
$Vmresult | add-member -MemberType NoteProperty -Name "CreatedBy" -Value $User
$Vmresult | add-member -MemberType NoteProperty -Name "CreatedOn" -Value $CreatedFormat
$Vmresult | add-member -MemberType NoteProperty -Name "CreatedOnFormat" -Value $Created
# ะัะฒะพะดะธะผ ัะตะทัะปััะฐัั
$Vmresult
} # Inline
} # ForEach
}
$Creators = GetCreators-Wf $VMfilePath
# ะะฐะฟะธััะฒะฐะตะผ ัะตะทัะปััะฐั ะฒ ัะฐะนะป
$Creators | select 'VM Name', CreatedBy, CreatedOn | Export-Csv -Path $filePath -NoTypeInformation -UseCulture -Force
Write-Host "CSV generetion finisghed at $(get-date). PROFIT"
เดฒเตเดฌเตเดฐเดฑเดฟ เดชเตเดฐเดคเตเดฏเตเด เดถเตเดฐเดฆเตเดง เด
เตผเดนเดฟเดเตเดเตเดจเตเดจเต
เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดฎเตเดทเตเดจเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดจเตเดนเดฐเดฎเดพเดฏ เดเดฐเต xlsx เดชเตเดฐเดฎเดพเดฃเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
# ะกะพะทะดะฐัะผ ะฝะพะฒัั ะบะฝะธะณั
# ะะพะทะผะพะถะฝัะต ะทะฝะฐัะตะฝะธั : "xls" ะธ "xlsx"
wb<-createWorkbook(type="xlsx")
# ะกัะธะปะธ ะดะปั ะธะผัะฝ ััะดะพะฒ ะธ ะบะพะปะพะฝะพะบ ะฒ ัะฐะฑะปะธัะฐั
TABLE_ROWNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE)
TABLE_COLNAMES_STYLE <- CellStyle(wb) + Font(wb, isBold=TRUE) +
Alignment(wrapText=TRUE, horizontal="ALIGN_CENTER") +
Border(color="black", position=c("TOP", "BOTTOM"),
pen=c("BORDER_THIN", "BORDER_THICK"))
# ะกะพะทะดะฐัะผ ะฝะพะฒัะน ะปะธัั
sheet <- createSheet(wb, sheetName = names[2])
# ะะพะฑะฐะฒะปัะตะผ ัะฐะฑะปะธัั
addDataFrame(incorrect_df_filtered,
sheet, startRow=1, startColumn=1, row.names=FALSE, byrow=FALSE,
colnamesStyle = TABLE_COLNAMES_STYLE,
rownamesStyle = TABLE_ROWNAMES_STYLE)
# ะะตะฝัะตะผ ัะธัะธะฝั, ััะพะฑั ัะพัะผะฐัะธัะพะฒะฐะฝะธะต ะฑัะปะพ ะฐะฒัะพะผะฐัะธัะตัะบะธะผ
autoSizeColumn(sheet = sheet, colIndex=c(1:ncol(incorrect_df)))
# ะะพะฑะฐะฒะปัะตะผ ัะธะปัััั
addAutoFilter(sheet, cellRange = "C1:G1")
# ะะฟัะตะดะตะปัะตะผ ััะธะปั
fo2 <- Fill(foregroundColor="red")
cs2 <- CellStyle(wb,
fill = fo2,
dataFormat = DataFormat("@"))
# ะะฐั
ะพะดะธะผ ััะดั ั ะฝะตะฒะตัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะผ ะฟะพะปะตะผ ะะปะฐะดะตะปััะฐ ะธ ะฟัะธะผะตะฝัะตะผ ะบ ะฝะธะผ ะพะฟัะตะดะตะปัะฝะฝัะน ััะธะปั
rowsOwner <- getRows(sheet, rowIndex = (which(!incorrect_df$isOwnerCorrect) + 1))
cellsOwner <- getCells(rowsOwner, colIndex = which( colnames(incorrect_df_filtered) == "Owner" ))
lapply(names(cellsOwner), function(x) setCellStyle(cellsOwner[[x]], cs2))
# ะะฐั
ะพะดะธะผ ััะดั ั ะฝะตะฒะตัะฝะพ ะทะฐะฟะพะปะฝะตะฝะฝัะผ ะฟะพะปะตะผ ะะพะดัะธััะตะผั ะธ ะฟัะธะผะตะฝัะตะผ ะบ ะฝะธะผ ะพะฟัะตะดะตะปัะฝะฝัะน ััะธะปั
rowsSubsystem <- getRows(sheet, rowIndex = (which(!incorrect_df$isSubsystemCorrect) + 1))
cellsSubsystem <- getCells(rowsSubsystem, colIndex = which( colnames(incorrect_df_filtered) == "Subsystem" ))
lapply(names(cellsSubsystem), function(x) setCellStyle(cellsSubsystem[[x]], cs2))
# ะะฝะฐะปะพะณะธัะฝะพ ะฟะพ ะะฐัะตะณะพัะธะธ
rowsCategory <- getRows(sheet, rowIndex = (which(!incorrect_df$isCategoryCorrect) + 1))
cellsCategory <- getCells(rowsCategory, colIndex = which( colnames(incorrect_df_filtered) == "Category" ))
lapply(names(cellsCategory), function(x) setCellStyle(cellsCategory[[x]], cs2))
# ะกะพะทะดะฐัะตะปั
rowsCreator <- getRows(sheet, rowIndex = (which(!incorrect_df$isCreatorCorrect) + 1))
cellsCreator <- getCells(rowsCreator, colIndex = which( colnames(incorrect_df_filtered) == "Creator" ))
lapply(names(cellsCreator), function(x) setCellStyle(cellsCreator[[x]], cs2))
# ะกะพั
ัะฐะฝัะตะผ ัะฐะนะป
saveWorkbook(wb, filenameIncorrect)
เดเดเตเดเตเดชเตเดเตเดเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
เดตเดฟเตปเดกเตเดธเต เดทเตเดกเตเดฏเตเดณเตผ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฐเต เดจเตเดฏเตเดจเตปเดธเตเด เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดถเดฐเดฟเดฏเดพเดฏ เด
เดตเดเดพเดถเดเตเดเดณเตเด เดธเดเตเดเตเดเดฐเดฃเดเตเดเดณเตเด เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเต เด
เดธเดพเดงเตเดฏเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดเดฒเตเดฒเดพเด เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดชเตเดฒเต เดเดฐเดเดญเดฟเดเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, R เดฒเตเดฌเตเดฐเดฑเดฟ เดเดฃเตเดเตเดคเตเดคเดฟ, เด
เดคเต เดคเดจเตเดจเต เดเดฐเต R เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดพเดธเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดฒเตเดเต เดซเดฏเดฒเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดชเตเดฒเตเด เดฎเดฑเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เด
เดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฎเดคเดฒ เดธเตเดตเดฎเตเดงเดฏเดพ เดถเดฐเดฟเดฏเดพเดเตเดเดพเด.
เดตเดฟเตปเดกเตเดธเต เดทเตเดกเตเดฏเตเดณเดฑเดฟเตฝ เดเดฐเต เดเดพเดธเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดฐเดฃเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเดณเตเดณ R เดเตเดกเดฟเดจเตเดฑเต เดเดฐเต เดญเดพเดเด
library(taskscheduleR)
myscript <- file.path(getwd(), "all_vm.R")
## ะทะฐะฟััะบะฐะตะผ ัะบัะธะฟั ัะตัะตะท 62 ัะตะบัะฝะดั
taskscheduler_create(taskname = "getAllVm", rscript = myscript,
schedule = "ONCE", starttime = format(Sys.time() + 62, "%H:%M"))
## ะทะฐะฟััะบะฐะตะผ ัะบัะธะฟั ะบะฐะถะดัะน ะดะตะฝั ะฒ 09:10
taskscheduler_create(taskname = "getAllVmDaily", rscript = myscript,
schedule = "WEEKLY",
days = c("MON", "TUE", "WED", "THU", "FRI"),
starttime = "02:00")
## ัะดะฐะปัะตะผ ะทะฐะดะฐัะธ
taskscheduler_delete(taskname = "getAllVm")
taskscheduler_delete(taskname = "getAllVmDaily")
# ะกะผะพััะธะผ ะปะพะณะธ (ะฟะพัะปะตะดะฝะธะต 4 ัััะพัะบะธ)
tail(readLines("all_vm.log"), sep ="n", n = 4)
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดชเตเดฐเดคเตเดฏเตเดเด
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเดเตเดเตเดเดฐเดฟเดเตเด เดถเตเดทเด, เดฎเดฑเตเดฑเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเดพเตป เดคเตเดเดเตเดเดฟ. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, VM เดเดฒเตเดฒเดพเดคเดพเดเตเดเดฟเดฏ เดคเตเดฏเดคเดฟ เดเดฃเตเดเตเดคเตเดคเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเต, เดเดจเตเดจเดพเตฝ vCenter-เดฒเต เดฒเตเดเตเดเตพ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดคเตเตผเดจเตเดจเต. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด เดเดฐเต เดซเตเตพเดกเดฑเดฟเตฝ เดซเดฏเดฒเตเดเตพ เดเดเตเดเดฏเตเด เด เดคเต เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ (เดเตผเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเตพ เด เดคเต เดเดเตเดเดณเตเดเต เดเตเดเตเดฃเตเดเต เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเต), เดจเดฟเดเตเดเตพเดเตเดเต เดชเดดเดฏ เดซเดฏเดฒเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต เด เดตเดฟเดเด เดเดฒเตเดฒเดพเดคเตเดค เดเดฆเตเดฏเดคเตเดคเต เดซเดฏเตฝ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด. เดเดจเตเดจเดพเตฝ เด เดคเต เดฐเดธเดเดฐเดฎเดฒเตเดฒ.
เดเดฐเต เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเต.
MS SQL เดธเตเตผเดตเดฑเดฟเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค - เดธเดฟเดธเตเดฑเตเดฑเด เดชเดคเดฟเดชเตเดชเต เดเตเดฎเตเดชเดฑเตฝ เดเตเดฌเดฟเตพ - เดฐเดเตเดทเดฏเตเดเตเดเดพเดฏเดฟ เดตเดจเตเดจเต. เดเดคเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดคเดพเตฝเดเตเดเดพเดฒเดฟเด (เดคเดพเดคเตเดเดพเดฒเดฟเดเดฎเดฒเตเดฒ) เดชเดเตเดเดฟเดเดเดณเดพเดฏเดฟ เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต.
เดเดจเตเดจเดคเดฟเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดพเดฏเดฟเดเตเดเดพเด
เดเตเดฐเตเดเตเดเดคเตเดคเดฟเตฝ, เดเดเตเดเตพ เดเดฐเต เดเตเดฌเดฟเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดชเดคเดฟเดชเตเดชเดฟเดจเตเดชเตเดชเด เดเดเตเดเตพเดเตเดเดคเต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดชเดฑเดฏเตเด, เดเตเดเดพเดคเต SQL เดธเตเตผเดตเตผ เด เดชเดเตเดเดฟเดเดฏเดฟเตฝ 2 เด เดงเดฟเด เดคเตเดฏเดคเดฟ เดธเดฎเดฏ เดเตเดณเดเตเดเดณเตเด (เดฑเตเดเตเดเตเตผเดกเต เดธเตเดทเตเดเดฟเดเตเด เดคเตเดฏเดคเดฟเดฏเตเด เดฑเตเดเตเดเตเตผเดกเดฟเดจเตเดฑเต เดเดพเดฒเดนเดฐเดฃ เดคเตเดฏเดคเดฟเดฏเตเด) เดฎเดพเดฑเตเดจเตเดจ เดเดฐเต เด เดงเดฟเด เดชเดเตเดเดฟเดเดฏเตเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดดเตเดคเดชเตเดชเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดเดพเดฒเดฟเดเดฎเดพเดฏ เดตเดฟเดตเดฐเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเดฟเตฝ เดจเตฝเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด เดจเตเดตเตเดทเดฃเดเตเดเดณเดฟเดฒเตเดเต, เดจเดฎเตเดเตเดเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดฑเต เดเตเดตเดฟเดค เดเดเตเดฐเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดเดเตเดเดคเตเดคเดฟเตฝ เดเดฒเตเดฒเดพ VM-เดเดณเตเดเตเดฏเตเด เด เดตเดธเตเดฅ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด. เดธเดฎเดฏเดคเตเดคเต.
เดเดฐเต เดชเตเดฐเดเดเดจ เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ, เดคเดพเตฝเดเตเดเดพเดฒเดฟเด เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฑเตเดฑเตเดฑเต เดเดเดชเดพเดเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดจเตเดจเดคเตเดตเดฐเต เดชเตเดฐเดงเดพเดจ เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฑเตเดฑเตเดฑเต เดเดเดชเดพเดเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเดฟเดฒเตเดฒ. เด. เดงเดพเดฐเดพเดณเด เดฑเตเดฑเตเดฑเต เดเดชเตเดชเดฑเตเดทเดจเตเดเดณเตเดณเตเดณ เดชเดเตเดเดฟเดเดเดณเดฟเตฝ, เด เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดเดพเดเตเดฐเดคเดฏเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฃเด, เดเดจเตเดจเดพเตฝ เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดคเต เดตเดณเดฐเต เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฐเต เดเดพเดฐเตเดฏเดฎเดพเดฃเต.
เดฎเตเดเตเดเดพเดจเดฟเดธเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดจเดฟเดเตเดเต R-เตฝ เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเดกเต เดเตเตผเดเตเดเตเดฃเตเดเดฟ เดตเดจเตเดจเต, เด เดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดตเดฏเตเดฎเดพเดฏเดฟ เดเดฒเตเดฒเดพ VM-เดเตพเดเตเดเตเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดเดฏเตเด เด เดคเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเดฟเดฏ เดตเดฐเดฟเดเตพ เดฎเดพเดคเตเดฐเด เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดเตเดกเต เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เดฌเตเดฆเตเดงเดฟเดชเดฐเดฎเดฒเตเดฒ; เดเดคเต compareDF เดฒเตเดฌเตเดฐเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต เดเดพเตป เด เดคเต เดเตเดตเดเต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด.
เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดกเดพเดฑเตเดฑ เดเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ R เดเตเดกเต
# ะะพะดัะตะฟะปัะตะผ ะฟะฐะบะตัั
library(odbc)
library(compareDF)
# ะคะพัะผะธััะตะผ ะบะพะฝะฝะตะบั
con <- dbConnect(odbc(),
Driver = "ODBC Driver 13 for SQL Server",
Server = DBParams$server,
Database = DBParams$database,
UID = DBParams$UID,
PWD = DBParams$PWD,
Port = 1433)
#### ะัะพะฒะตััะตะผ ะตััั ะปะธ ัะฐะฑะปะธัะฐ. ะัะปะธ ะฝะตั - ัะพะทะดะฐัะผ. ####
if (!dbExistsTable(con, DBParams$TblName)) {
#### ะกะพะทะดะฐัะผ ัะฐะฑะปะธัั ####
create <- dbSendStatement(
con,
paste0(
'CREATE TABLE ',
DBParams$TblName,
'(
[Id] [int] NOT NULL PRIMARY KEY CLUSTERED,
[VM.Name] [varchar](255) NULL,
[Cluster] [varchar](255) NULL,
[Esxi.Host] [varchar](255) NULL,
[IP.Address.1] [varchar](255) NULL,
[IP.Address.2] [varchar](255) NULL,
[IP.Address.3] [varchar](255) NULL,
[IP.Address.4] [varchar](255) NULL,
[IP.Address.5] [varchar](255) NULL,
[IP.Address.6] [varchar](255) NULL,
[vCPU] [int] NULL,
[CPU.Sockets] [int] NULL,
[Core.per.Socket] [int] NULL,
[RAM..GB.] [int] NULL,
[Total.HDD..GB.] [int] NULL,
[Power.State] [varchar](255) NULL,
[OS] [varchar](255) NULL,
[Boot.Time] [varchar](255) NULL,
[VMTools.Status] [varchar](255) NULL,
[VMTools.Version] [int] NULL,
[VMTools.Version.Status] [varchar](255) NULL,
[VMTools.Running.Status] [varchar](255) NULL,
[Creation.Date] [varchar](255) NULL,
[Creator] [varchar](255) NULL,
[Category] [varchar](255) NULL,
[Owner] [varchar](255) NULL,
[Subsystem] [varchar](255) NULL,
[IP.s] [varchar](255) NULL,
[vCenter.Name] [varchar](255) NULL,
DateFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL,
DateTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL,
PERIOD FOR SYSTEM_TIME (DateFrom, DateTo)
) ON [PRIMARY]
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = ', DBParams$TblHistName,'));'
)
)
# ะัะฟัะฐะฒะปัะตะผ ะฟะพะดะณะพัะพะฒะปะตะฝะฝัะน ะทะฐะฟัะพั
dbClearResult(create)
} # if
#### ะะฐัะฐะปะพ ัะฐะฑะพัั ั ัะฐะฑะปะธัะตะน ####
# ะะฑะพะทะฝะฐัะฐะตะผ ัะฐะฑะปะธัั, ั ะบะพัะพัะพะน ะฑัะดะตะผ ัะฐะฑะพัะฐัั
allVM_db_con <- tbl(con, DBParams$TblName)
#### ะกัะฐะฒะฝะธะฒะฐะตะผ ัะฐะฑะปะธัั ####
# ะกะพะฑะธัะฐะตะผ ะดะฐะฝะฝัะต ั ัะฐะฑะปะธัั (ัะฑะธัะฐะตะผ ัะปัะถะตะฑะฝัะต ะฒัะตะผะตะฝะฝัะต ะฟะพะปั)
allVM_db <- allVM_db_con %>%
select(c(-"DateTo", -"DateFrom")) %>%
collect()
# ะกะพะทะดะฐัะผ ัะฐะฑะปะธัั ัะพ ััะฐะฒะฝะตะฝะธะตะผ ะพะฑัะตะบัะพะฒ. ะกัะฐะฒะฝะธะฒะฐะตะผ ะฟะพ Id
# ะฃะดะฐะปัะฝะฝัะต ะพะฑัะตะบัั ัะฐะผ ะฑัะดัั ะฟะพะผะตัะตะฝั ัะตัะตะท -, ัะพะทะดะฐะฝะฝัะต ัะตัะตะท +, ะธะทะผะตะฝัะฝะฝัะต ัะตัะตะท - ะธ +
ctable_VM <- fullXslx_df %>%
compare_df(allVM_db,
c("Id"))
#### ะฃะดะฐะปะตะฝะธะต ัััะพะบ ####
# ะัะดะธัะฐะตะผ Id ะฒะธัััะฐะปะพะบ, ะทะฐะฟะธัะธ ะพ ะบะพัะพััั
ะฝะฐะดะพ ัะดะฐะปะธัั
remove_Id <- ctable_VM$comparison_df %>%
filter(chng_type == "-") %>%
select(Id)
# ะัะพะฒะตััะตะผ, ััะพ ะตััั ะทะฐะฟะธัะธ (ะตัะปะธ ะทะฐะฟะธัะตะน ะฝะตั - ะธ ัะดะฐะปััั ะฝะธัะตะณะพ ะฝะต ะฝัะถะฝะพ)
if (remove_Id %>% nrow() > 0) {
# ะะพะฝััััะธััะตะผ ัะฐะฑะปะพะฝ ะดะปั ะทะฐะฟัะพัะฐ ะฝะฐ ัะดะฐะปะตะฝะธะต ะดะฐะฝะฝัั
delete <- dbSendStatement(con,
paste0('
DELETE
FROM ',
DBParams$TblName,
' WHERE "Id"=?
') # paste
) # send
# ะกะพะทะดะฐัะผ ะทะฐะฟัะพั ะฝะฐ ัะดะฐะปะตะฝะธะต ะดะฐะฝะฝัั
dbBind(delete, remove_Id)
# ะัะฟัะฐะฒะปัะตะผ ะฟะพะดะณะพัะพะฒะปะตะฝะฝัะน ะทะฐะฟัะพั
dbClearResult(delete)
} # if
#### ะะพะฑะฐะฒะปะตะฝะธะต ัััะพะบ ####
# ะัะดะตะปัะตะผ ัะฐะฑะปะธัั, ัะพะดะตัะถะฐััั ัััะพะบะธ, ะบะพัะพััะต ะฝัะถะฝะพ ะดะพะฑะฐะฒะธัั.
allVM_add <- ctable_VM$comparison_df %>%
filter(chng_type == "+") %>%
select(-chng_type)
# ะัะพะฒะตััะตะผ, ะตััั ะปะธ ัััะพะบะธ, ะบะพัะพััะต ะฝัะถะฝะพ ะดะพะฑะฐะฒะธัั ะธ ะดะพะฑะฐะฒะปัะตะผ (ะตัะปะธ ะฝะตั - ะฝะต ะดะพะฑะฐะฒะปัะตะผ)
if (allVM_add %>% nrow() > 0) {
# ะะธัะตะผ ัะฐะฑะปะธัั ัะพ ะฒัะตะผะธ ะฝะตะพะฑั
ะพะดะธะผัะผะธ ะดะฐะฝะฝัะผะธ
dbWriteTable(con,
DBParams$TblName,
allVM_add,
overwrite = FALSE,
append = TRUE)
} # if
#### ะะต ะทะฐะฑัะฒะฐะตะผ ัะดะตะปะฐัั ะดะธัะบะพะฝะฝะตะบั ####
dbDisconnect(con)
เดเดเต
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏเดคเดฟเดจเตเดฑเต เดซเดฒเดฎเดพเดฏเดฟ, เดเดคเดพเดจเตเด เดฎเดพเดธเดเตเดเตพเดเตเดเตเดณเตเดณเดฟเตฝ เดเตเดฐเดฎเด เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตเดเดฏเตเด เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดเดฟเดฒเดชเตเดชเตเตพ เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด VM-เดเตพ เดฆเตเดถเตเดฏเดฎเดพเดเตเด, เดเดจเตเดจเดพเตฝ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฐเต เดจเดฒเตเดฒ เดเตผเดฎเตเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเดพเดฏเดฟ เดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เด เดชเตเตผเดต VM เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ 2 เดฆเดฟเดตเดธเดคเตเดคเตเดเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด เดเดฟเดคเตเดคเดฑเดฏเตเด เดเดฃเตเดเดพเดเตเดเดฟ.
เดเดคเดฟเตฝ เดญเตเดฐเดฟเดญเดพเดเดตเตเด เดฎเตเดเตเดเดฟเตฝ เด เดฒเตเดฒ, เดชเตเดฐเดคเตเดฏเตเด เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฃเต, เดชเดเตเดทเต เดเดพเดธเตเดเต เดฐเดธเดเดฐเดตเตเด เดเดชเตเดทเดฃเตฝ เดเดฃเตเดจเตเดจเตเด เดเดฐเดพเตพ เดชเดฑเดเตเดเตเดเตเดเดพเด.
R เดธเตเดตเดฏเด เดเดฐเต เดฎเดฟเดเดเตเด เดธเดพเตผเดตเดคเตเดฐเดฟเด เดญเดพเดทเดฏเดพเดฃเตเดจเตเดจเต เดตเตเดฃเตเดเตเด เดคเตเดณเดฟเดฏเดฟเดเตเดเต, เดเดคเต เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเดเตเดเดฃเดเตเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฎเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดเดฑเดตเดฟเดเดเตเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ เดเดฐเต เดฎเดฟเดเดเตเด "เดฒเตเดฏเตผ" เดเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com