{"id":34901,"date":"2019-10-31T22:01:10","date_gmt":"2019-10-31T19:01:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell\/"},"modified":"2019-10-31T22:01:10","modified_gmt":"2019-10-31T19:01:10","slug":"ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell","title":{"rendered":"T\u00e4gliche Berichte \u00fcber den Zustand virtueller Maschinen mit R und PowerShell","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0438 PowerShell\" src=\"\/wp-content\/uploads\/2019\/06\/aefe4f011531a8322f702606892d899f.JPG\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4 id=\"vstuplenie\">\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h4>\n<p><\/p>\n<p>\u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439. \u0423\u0436\u0435 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432), \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e). \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u0434\u043e\u043c. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4 id=\"formirovanie-potrebnosti\">\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p><\/p>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 1500 \u0412\u041c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e 3-\u043c vCenter). \u0421\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e custom \u043f\u043e\u043b\u0435\u0439 \u0432 vCenter, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0412\u041c \u043d\u0430 \u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043b\u0438 \u043e\u043d\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0435\u043c \u0438 \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u044b. \u0427\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u0451\u043b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043c\u0430\u0448\u0438\u043d \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443. \u0420\u0430\u0437 \u0432 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u043a\u0442\u043e-\u0442\u043e \u043f\u0441\u0438\u0445\u043e\u0432\u0430\u043b, \u0437\u0430\u0442\u0435\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0443\u0436\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0442\u043e\u0440\u044b.<br \/>\n\u0421\u0440\u0430\u0437\u0443 \u0443\u0442\u043e\u0447\u043d\u044e, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0438 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e, \u0438 \u0442.\u0434. \u0438 \u0442.\u043f. \u0418 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u043d\u0435\u0443\u043a\u043e\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0438 \u0432\u043e \u0432\u0441\u0451\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0423 \u043d\u0430\u0441, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435 \u0442\u0430\u043a, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0441\u0442\u0430\u0442\u044c\u0438 \ud83d\ude42<\/p>\n<p><\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439.<br \/>\n\u0420\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u043d\u0430 \u0432\u0441\u0435\u0445 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0438\u0445 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043d\u0430\u0447\u0430\u043b\u043e\u043c.<\/p>\n<p><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u0433 \u0443\u0436\u0435 \u0431\u044b\u043b \u0432\u043d\u0435\u0434\u0440\u0451\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 PowerShell, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0441\u0435\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0432\u0441\u0435\u0445 vCenter-\u043e\u0432 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b 3 csv \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 vCenter), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u0434\u0438\u0441\u043a. \u0411\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044f\u0437\u044b\u043a\u0430 R, \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u044b\u0442.<\/p>\n<p><\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u043e\u0441\u043b\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e \u043f\u043e\u0447\u0442\u0435, \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 (\u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u0435\u0435), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u043b\u043e\u0433\u043e\u0432 vSphere \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 vm \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. <\/p>\n<p><\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c IDE RStudio Desktop \u0438 PowerShell ISE.<\/p>\n<p><\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0432\u0438\u043d\u0434\u043e\u0432\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<p><\/p>\n<h4 id=\"opisanie-obschey-logiki\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0438.<\/h4>\n<p><\/p>\n<p>\u041e\u0431\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f.<\/p>\n<p><\/p>\n<ul>\n<li>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PowerShell \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 R, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432 \u043e\u0434\u0438\u043d csv. \u041e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e. (\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0433\u043e\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 R \u0432 PowerShell \u0432 \u0432\u0438\u0434\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043d\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u0434\u0430 \u0438 \u0438\u043c\u0435\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 csv \u043b\u0435\u0433\u0447\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u0435\u043c-\u0442\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438).<\/li>\n<li>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c. \u2014 \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c word \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a\u043e\u043b\u043b\u0435\u0433 &quot;\u041d\u0435 \u043d\u0443 \u0430 \u043a\u0430\u043a \u044f \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c?&quot;.<\/li>\n<li>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c \u0438\u0437 csv \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c dataframe, \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 xlsx \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441.<\/li>\n<li>\u041a dataframe \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0412\u041c \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 (\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0438 \u043f\u043e\u043b\u044f).<\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0412\u041c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 PowerShell \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u043e\u0433\u0438 vCenter \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0412\u041c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0412\u041c \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043e\u0437\u043d\u0430\u0451\u0442\u0441\u044f, \u0447\u044c\u044f \u043c\u0430\u0448\u0438\u043d\u0430. \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043b\u043e\u0433\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u043d\u0435\u0434\u0435\u043b\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c workflow, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0412\u041c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 csv, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u044f\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432 R. <\/li>\n<li>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 xlsx \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0412\u041c.<\/li>\n<li>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e, \u043a\u0443\u0434\u0430 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043c. \u0412 \u0442\u0435\u043a\u0441\u0442\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0412\u041c, \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0415\u0441\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0412\u041c \u043d\u0435\u0442 \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e\u0439 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439.<\/li>\n<li>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c \u0432 \u0411\u0414 SQL Server \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 (\u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u2014 \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0434\u0430\u043b\u044c\u0448\u0435)<\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"sobstvenno-skripty\">\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/h4>\n<p>\n<b class=\"spoiler_title\">\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 R<\/b><\/p>\n<pre><code class=\"python\"># \u041f\u0443\u0442\u044c \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 (\u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0432\u0438\u043d\u0434\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439)\nsetwd(&quot;C:ScriptsgetVm&quot;)\n\n#### \u041f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b ####\nlibrary(tidyverse)\nlibrary(xlsx)\nlibrary(mailR)\nlibrary(rmarkdown)\n\n##### \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0443\u0442\u0438 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 #####\nsource(file = &quot;const.R&quot;, local = T, encoding = &quot;utf-8&quot;)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0412\u041c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c.\nif (file.exists(filenameVmCreationRules)) {file.remove(filenameVmCreationRules)}\n\n#### \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u043e\u0440\u0434\u043e\u0432\u0441\u043a\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438\nrender(&quot;VM_name_rules.Rmd&quot;,\n       output_format = word_document(),\n       output_file = filenameVmCreationRules)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0412\u041c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c\nif (file.exists(allVmXlsxPath)) {file.remove(allVmXlsxPath)}\n\n#### \u0417\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0447\u0435\u0440\u0435\u0437 PowerShell \u0441\u043a\u0440\u0438\u043f\u0442. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c csv.\nsystem(paste0(&quot;powershell -File &quot;, getVmPsPath))\n\n# \u041f\u043e\u043b\u043d\u044b\u0439 df\nfullXslx_df &lt;- allVmXlsxPath %&gt;% \n  read.csv2(stringsAsFactors = FALSE)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\nfull_df &lt;- fullXslx_df %&gt;%\n  mutate(\n    # \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438, \u043f\u043e\u0442\u043e\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f,\n    isSubsystemCorrect = Subsystem %&gt;% \n      gsub(&quot;[[:space:]]&quot;, &quot;&quot;, .) %&gt;% \n      str_split(., &quot;,&quot;) %&gt;% \n      map(function(x) (all(x %in% AllowedValues$Subsystem))) %&gt;%\n      as.logical(),\n    isOwnerCorrect = Owner %in% AllowedValues$Owner,\n    isCategoryCorrect = Category %in% AllowedValues$Category,\n    isCreatorCorrect = (!is.na(Creator) &amp; Creator != ''),\n    isCreation.DateCorrect = map(Creation.Date, IsDate)\n  )\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0412\u041c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c.\nif (file.exists(filenameAll)) {file.remove(filenameAll)}\n\n#### \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c xslx \u0444\u0430\u0439\u043b \u0441 \u043e\u0442\u0447\u0451\u0442\u043e\u043c ####\n# \u041e\u0431\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\nfull_df %&gt;% write.xlsx(file=filenameAll,\n                       sheetName=names[1],\n                       col.names=TRUE,\n                       row.names=FALSE,\n                       append=FALSE)\n\n#### \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c xslx \u0444\u0430\u0439\u043b \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 ####\n# \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c df\nincorrect_df &lt;- full_df %&gt;%\n  select(VM.Name, \n         IP.s, \n         Owner,\n         Subsystem,\n         Creator,\n         Category,\n         Creation.Date,\n         isOwnerCorrect, \n         isSubsystemCorrect, \n         isCategoryCorrect,\n         isCreatorCorrect,\n         vCenter.Name) %&gt;%\n  filter(isSubsystemCorrect == F | \n           isOwnerCorrect == F |\n           isCategoryCorrect == F |\n           isCreatorCorrect == F)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0412\u041c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c.\nif (file.exists(filenameIncVM)) {file.remove(filenameIncVM)}\n\n# \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a VM \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0432 csv\nincorrect_df %&gt;%\n  select(VM.Name) %&gt;%\n  write_csv2(path = filenameIncVM, append = FALSE)\n\n# \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u043f\u043e\u0447\u0442\u0443\nincorrect_df_filtered &lt;- incorrect_df %&gt;% \n  select(VM.Name, \n         IP.s, \n         Owner, \n         Subsystem, \n         Category,\n         Creator,\n         vCenter.Name,\n         Creation.Date\n  )\n\n# \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a\nnumberOfRows &lt;- nrow(incorrect_df)\n\n#### \u041d\u0430\u0447\u0430\u043b\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f ####\n# \u0414\u0430\u043b\u044c\u0448\u0435 \u043b\u0438\u0431\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043b\u0438\u0431\u043e \u043d\u0435\u0442.\n# \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c - \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442\n\nif (numberOfRows &gt; 0) {\n\n  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c.\n  if (file.exists(creatorsFilePath)) {file.remove(creatorsFilePath)}\n\n  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PowerShell \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 VM. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c csv.\n  system(paste0(&quot;powershell -File &quot;, getCreatorsPath))\n\n  # \u0427\u0438\u0442\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f\u043c\u0438\n  creators_df &lt;- creatorsFilePath %&gt;%\n    read.csv2(stringsAsFactors = FALSE)\n\n  # \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f\u043c\u0438\n  incorrect_df_filtered &lt;- incorrect_df_filtered %&gt;% \n    select(VM.Name, \n           IP.s, \n           Owner, \n           Subsystem, \n           Category,\n           Creator,\n           vCenter.Name,\n           Creation.Date\n    ) %&gt;% \n    left_join(creators_df, by = &quot;VM.Name&quot;) %&gt;% \n    rename(`\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c` = CreatedBy, \n           `\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f` = CreatedOn)  \n\n  # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043b\u043e \u043f\u0438\u0441\u044c\u043c\u0430\n  emailBody &lt;- paste0(\n    '&lt;html&gt;\n                    &lt;h3&gt;\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u0433\u0438.&lt;\/h3&gt;\n                    &lt;p&gt;\u041f\u043e\u043b\u043d\u0443\u044e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 H: \u0432\u043e\u0442 \u0442\u0443\u0442:&lt;p&gt;\n                    &lt;p&gt;\\server.ruVM', sourceFileFormat, '&lt;\/p&gt;\n                    &lt;p&gt;\u0422\u0430\u043a\u0436\u0435 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0412\u041c \u0441 &lt;strong&gt;\u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438&lt;\/strong&gt; \u043f\u043e\u043b\u044f\u043c\u0438. \u0412\u0441\u0435\u0433\u043e \u0438\u0445 &lt;strong&gt;', numberOfRows,'&lt;\/strong&gt;.&lt;\/p&gt;\n                    &lt;p&gt;\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. &lt;strong&gt;\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c&lt;\/strong&gt; \u0438 &lt;strong&gt;\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f&lt;\/strong&gt;, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 vCenter \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u043d\u0435\u0434\u0435\u043b\u0438&lt;\/p&gt;\n                    &lt;p&gt;\u041f\u0440\u043e\u0441\u044c\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u0430\u0448\u0438\u043d \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0438&lt;\/p&gt;\n                    &lt;p&gt;&lt;img src=&quot;data\/meme.jpg&quot;&gt;&lt;\/p&gt;\n                    &lt;\/html&gt;'\n  )\n\n  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430\n  if (file.exists(filenameIncorrect)) {file.remove(filenameIncorrect)}\n\n  # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438 \u0438 \u0442.\u0434.\n  source(file = &quot;email.R&quot;, local = T, encoding = &quot;utf-8&quot;)\n\n  #### \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 ####\n  send.mail(from = emailParams$from,\n            to = emailParams$to,\n            subject = &quot;\u0412\u041c \u0441 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438&quot;,\n            body = emailBody,\n            encoding = &quot;utf-8&quot;,\n            html = TRUE,\n            inline = TRUE,\n            smtp = emailParams$smtpParams,\n            authenticate = TRUE,\n            send = TRUE,\n            attach.files = c(filenameIncorrect, filenameVmCreationRules),\n            debug = FALSE)\n\n  #### \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u0431\u043b\u043e\u043a, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0412\u041c ####\n} else {\n\n  # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043b\u043e \u043f\u0438\u0441\u044c\u043c\u0430\n  emailBody &lt;- paste0(\n    '&lt;html&gt;\n    &lt;h3&gt;\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u0433\u0438&lt;\/h3&gt;\n   &lt;p&gt;\u041f\u043e\u043b\u043d\u0443\u044e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 H: \u0432\u043e\u0442 \u0442\u0443\u0442:&lt;p&gt;\n    &lt;p&gt;\\server.ruVM', sourceFileFormat, '&lt;\/p&gt;\n    &lt;p&gt;\u0422\u0430\u043a\u0436\u0435, \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0412\u041c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b&lt;\/p&gt;\n    &lt;p&gt;&lt;img src=&quot;data\/meme_correct.jpg&quot;&gt;&lt;\/p&gt;\n    &lt;\/html&gt;'\n  )\n\n  #### \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u0435\u0437 \u043f\u043b\u043e\u0445\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 VM ####\n  send.mail(from = emailParams$from,\n            to = emailParams$to,\n            subject = &quot;\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f&quot;,\n            body = emailBody,\n            encoding = &quot;utf-8&quot;,\n            html = TRUE,\n            inline = TRUE,\n            smtp = emailParams$smtpParams,\n            authenticate = TRUE,\n            send = TRUE,\n            debug = FALSE)\n}\n\n####### \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414 #####\n\nsource(file = &quot;DB.R&quot;, local = T, encoding = &quot;utf-8&quot;)\n<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 vm \u043d\u0430 PowerShell<\/b><\/p>\n<pre><code class=\"python\"># \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\n$vCenterNames = @(\n                    &quot;vcenter01&quot;, \n                    &quot;vcenter02&quot;, \n                    &quot;vcenter03&quot;\n                    )\n$vCenterUsername = &quot;myusername&quot;\n$vCenterPassword = &quot;mypassword&quot;\n\n$filename = &quot;C:ScriptsgetVmdataallvmall-vm-$(get-date -f yyyy-MM-dd).csv&quot;\n\n$destinationSMB = &quot;server.rumyfolder$vm&quot;\n$IP0=&quot;&quot;\n$IP1=&quot;&quot;\n$IP2=&quot;&quot;\n$IP3=&quot;&quot;\n$IP4=&quot;&quot;\n$IP5=&quot;&quot;\n\n# \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e \u0432\u0441\u0435\u043c vCenter, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0411\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435)\nConnect-VIServer -Server $vCenterNames -User $vCenterUsername -Password $vCenterPassword\n\nwrite-host &quot;&quot;\n\n# \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u043e \u0432\u0441\u0435\u043c vCenter-\u0430\u043c\nfunction Get-VMinventory {\n\n# \u0412 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u0438\u0441\u043a\u043e \u0432\u0441\u0435\u0445 \u0412\u041c, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432\n$AllVM = Get-VM | Sort Name\n$cnt = $AllVM.Count\n$count = 1\n\n# \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\n   foreach ($vm in $AllVM) {\n   $StartTime = $(get-date)\n\n     $IP0 = $vm.Guest.IPAddress[0]\n     $IP1 = $vm.Guest.IPAddress[1]\n     $IP2 = $vm.Guest.IPAddress[2]\n     $IP3 = $vm.Guest.IPAddress[3]\n     $IP4 = $vm.Guest.IPAddress[4]\n     $IP5 = $vm.Guest.IPAddress[5]\n\n     If ($IP0 -ne $null) {If ($IP0.Contains(&quot;:&quot;) -ne 0) {$IP0=&quot;&quot;}}\n     If ($IP1 -ne $null) {If ($IP1.Contains(&quot;:&quot;) -ne 0) {$IP1=&quot;&quot;}}\n     If ($IP2 -ne $null) {If ($IP2.Contains(&quot;:&quot;) -ne 0) {$IP2=&quot;&quot;}}\n     If ($IP3 -ne $null) {If ($IP3.Contains(&quot;:&quot;) -ne 0) {$IP3=&quot;&quot;}}\n     If ($IP4 -ne $null) {If ($IP4.Contains(&quot;:&quot;) -ne 0) {$IP4=&quot;&quot;}}\n     If ($IP5 -ne $null) {If ($IP5.Contains(&quot;:&quot;) -ne 0) {$IP5=&quot;&quot;}}\n\n     $cluster = $vm | Get-Cluster | Select-Object -ExpandProperty name  \n     $Bootime = $vm.ExtensionData.Runtime.BootTime\n     $TotalHDDs = $vm.ProvisionedSpaceGB -as [int]\n     $CreationDate = $vm.CustomFields.Item(&quot;CreationDate&quot;) -as [string]\n     $Creator = $vm.CustomFields.Item(&quot;Creator&quot;) -as [string]\n     $Category = $vm.CustomFields.Item(&quot;Category&quot;) -as [string]\n     $Owner = $vm.CustomFields.Item(&quot;Owner&quot;) -as [string]\n     $Subsystem = $vm.CustomFields.Item(&quot;Subsystem&quot;) -as [string]\n\n     $IPS = $vm.CustomFields.Item(&quot;IP&quot;) -as [string]\n\n     $vCPU = $vm.NumCpu\n     $CorePerSocket = $vm.ExtensionData.config.hardware.NumCoresPerSocket\n     $Sockets = $vCPU\/$CorePerSocket\n\n     $Id = $vm.Id.Split('-')[2] -as [int]\n\n     # \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442\n     $Vmresult = New-Object PSObject\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Id&quot; -Value $Id   \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;VM Name&quot; -Value $vm.Name  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Cluster&quot; -Value $cluster  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Esxi Host&quot; -Value $VM.VMHost  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 1&quot; -Value $IP0\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 2&quot; -Value $IP1\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 3&quot; -Value $IP2\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 4&quot; -Value $IP3\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 5&quot; -Value $IP4\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP Address 6&quot; -Value $IP5\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;vCPU&quot; -Value $vCPU\n     $Vmresult | Add-Member -MemberType NoteProperty -Name &quot;CPU Sockets&quot; -Value $Sockets\n     $Vmresult | Add-Member -MemberType NoteProperty -Name &quot;Core per Socket&quot; -Value $CorePerSocket\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;RAM (GB)&quot; -Value $vm.MemoryGB\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Total-HDD (GB)&quot; -Value $TotalHDDs\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Power State&quot; -Value $vm.PowerState\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;OS&quot; -Value $VM.ExtensionData.summary.config.guestfullname  \n     $Vmresult | Add-Member -MemberType NoteProperty -Name &quot;Boot Time&quot; -Value $Bootime\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;VMTools Status&quot; -Value $vm.ExtensionData.Guest.ToolsStatus  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;VMTools Version&quot; -Value $vm.ExtensionData.Guest.ToolsVersion  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;VMTools Version Status&quot; -Value $vm.ExtensionData.Guest.ToolsVersionStatus  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;VMTools Running Status&quot; -Value $vm.ExtensionData.Guest.ToolsRunningStatus  \n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Creation Date&quot; -Value $CreationDate\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Creator&quot; -Value $Creator\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Category&quot; -Value $Category\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Owner&quot; -Value $Owner\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;Subsystem&quot; -Value $Subsystem\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;IP's&quot; -Value $IPS\n     $Vmresult | add-member -MemberType NoteProperty -Name &quot;vCenter Name&quot; -Value $vm.Uid.Split('@')[1].Split(':')[0]  \n\n# \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u043e\u0431\u0449\u0435\u0435 \u0438 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e.\n     $elapsedTime = $(get-date) - $StartTime\n     $totalTime = &quot;{0:HH:mm:ss}&quot; -f ([datetime]($elapsedTime.Ticks*($cnt - $count)))\n\n     clear-host\n     Write-Host &quot;Processing&quot; $count &quot;from&quot; $cnt \n     Write-host &quot;Progress:&quot; ([math]::Round($count\/$cnt*100, 2)) &quot;%&quot; \n     Write-host &quot;You have about &quot; $totalTime &quot;for cofee&quot;\n     Write-host &quot;&quot;\n\n     $count++\n\n# \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0447\u0442\u043e\u0431\u044b \u0446\u0438\u043a\u043b &quot;\u0437\u043d\u0430\u043b&quot; \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0430\n     $Vmresult\n   }\n\n}\n\n# \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 csv\n$allVm = Get-VMinventory | Export-CSV -Path $filename -NoTypeInformation -UseCulture -Force\n\n# \u041f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043d\u0430\u043c \u043c\u0435\u0441\u0442\u043e \u0438, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043f\u0438\u0448\u0435\u043c \u043b\u043e\u0433.\ntry\n    {\n        Copy-Item $filename -Destination $destinationSMB -Force -ErrorAction SilentlyContinue\n    }\ncatch\n    {\n        $error | Export-CSV -Path $filename&quot;.error&quot; -NoTypeInformation -UseCulture -Force\n    }<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">\u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 PowerShell, \u0432\u044b\u0434\u0451\u0440\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438 \u0434\u0430\u0442\u044b \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f<\/b><\/p>\n<pre><code class=\"python\"># \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a VM\n$VMfilePath = &quot;C:ScriptsgetVmcreators_VMcreators_VM_$(get-date -f yyyy-MM-dd).csv&quot;\n# \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\n$filePath = &quot;C:ScriptsgetVmdatacreatorscreators-$(get-date -f yyyy-MM-dd).csv&quot;\n\n# \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u043e\u043a\u0440\u0444\u043b\u043e\u0443\nWorkflow GetCreators-Wf\n{\n    # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\n    param([string[]]$VMfilePath)\n\n# \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 workflow\n$vCenterUsername = &quot;myusername&quot;\n$vCenterPassword = &quot;mypassword&quot;\n$daysToLook = 14\n$start = (get-date).AddDays(-$daysToLook)\n$finish = get-date\n# \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043f\u0438\u0441\u0430\u043d\u044b \u0432 csv \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e\n$UnknownUser = &quot;UNKNOWN&quot;\n$UnknownCreatedTime = &quot;0000-00-00&quot;\n\n# \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043e \u0432\u0441\u0451\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435.\n$vCenterNames = @(\n                    &quot;vcenter01&quot;, \n                    &quot;vcenter02&quot;, \n                    &quot;vcenter03&quot;\n                    )\n\n# \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a VM \u0438\u0437 csv \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b\n$list = Import-Csv $VMfilePath -UseCulture | select -ExpandProperty VM.Name\n\n# \u0426\u0438\u043a\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e (\u043f\u043e 5 \u043c\u0430\u0448\u0438\u043d \u0437\u0430 \u0440\u0430\u0437)\nforeach -parallel ($row in $list)\n  {\n    # \u042d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0447\u0435\u0440\u0435\u0437 $Using\n    InlineScript {\n\n    # \u0412\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430\n        $StartTime = $(get-date)\n\n        Write-Host &quot;&quot;\n        Write-Host &quot;Processing $Using:row started at $StartTime&quot;\n        Write-Host &quot;&quot;\n\n        # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0451\u043c \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u0430\u0441\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438\n        $con = Connect-VIServer -Server $Using:vCenterNames -User $Using:vCenterUsername -Password $Using:vCenterPassword\n\n        # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 vm\n        $vm = Get-VM -Name $Using:row\n\n      # \u041d\u0438\u0436\u0435 2 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041e\u0434\u043d\u0430 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u0442\u043e\u0440\u0430\u044f - \u0431\u0435\u0437. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c,\n      $Event = $vm | Get-VIEvent -Start $Using:start -Finish $Using:finish -Types Info | Where { $_.Gettype().Name -eq &quot;VmBeingDeployedEvent&quot; -or $_.Gettype().Name -eq &quot;VmCreatedEvent&quot; -or $_.Gettype().Name -eq &quot;VmRegisteredEvent&quot; -or $_.Gettype().Name -eq &quot;VmClonedEvent&quot;}\n      # $Event = $vm | Get-VIEvent -Types Info | Where { $_.Gettype().Name -eq &quot;VmBeingDeployedEvent&quot; -or $_.Gettype().Name -eq &quot;VmCreatedEvent&quot; -or $_.Gettype().Name -eq &quot;VmRegisteredEvent&quot; -or $_.Gettype().Name -eq &quot;VmClonedEvent&quot;}\n\n      # \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043b\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u0442\u043e\n      If (($Event | Measure-Object).Count -eq 0){\n         $User = $Using:UnknownUser\n         $Created = $Using:UnknownCreatedTime\n         $CreatedFormat = $Using:UnknownCreatedTime\n      } Else {\n         If ($Event.Username -eq &quot;&quot; -or $Event.Username -eq $null) {\n            $User = $Using:UnknownUser\n         } Else {\n         $User = $Event.Username\n         } # Else\n            $CreatedFormat = $Event.CreatedTime\n            # \u041e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u0433 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0438\u043b, \u0447\u0442\u043e\u0431\u044b \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e. \u0410 \u0432 \u0411\u0414 \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442.\n            $Created = $Event.CreatedTime.ToString('yyyy-MM-dd')\n         } # Else\n\n      Write-Host &quot;Creator for $vm is $User. Creating object.&quot;\n\n      # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.\n      $Vmresult = New-Object PSObject\n      $Vmresult | add-member -MemberType NoteProperty -Name &quot;VM Name&quot; -Value $vm.Name  \n      $Vmresult | add-member -MemberType NoteProperty -Name &quot;CreatedBy&quot; -Value $User\n      $Vmresult | add-member -MemberType NoteProperty -Name &quot;CreatedOn&quot; -Value $CreatedFormat\n      $Vmresult | add-member -MemberType NoteProperty -Name &quot;CreatedOnFormat&quot; -Value $Created           \n      # \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\n      $Vmresult\n\n    } # Inline\n\n} # ForEach\n\n}\n\n$Creators = GetCreators-Wf $VMfilePath\n# \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0444\u0430\u0439\u043b\n$Creators | select 'VM Name', CreatedBy, CreatedOn | Export-Csv -Path $filePath -NoTypeInformation -UseCulture -Force\n\nWrite-Host &quot;CSV generetion finisghed at $(get-date). PROFIT&quot;\n<\/code><\/pre>\n<p><\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/colearendt\/xlsx\">xlsx<\/a><\/noindex>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a \u043f\u0438\u0441\u044c\u043c\u0443 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c (\u043a\u0430\u043a \u043b\u044e\u0431\u0438\u0442 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e), \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e csv \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439.<\/p>\n<p>\n<b class=\"spoiler_title\">\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e xlsx \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d<\/b><\/p>\n<pre><code class=\"python\"># \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u0443\u044e \u043a\u043d\u0438\u0433\u0443\n# \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f : &quot;xls&quot; \u0438 &quot;xlsx&quot;\nwb&lt;-createWorkbook(type=&quot;xlsx&quot;)\n\n# \u0421\u0442\u0438\u043b\u0438 \u0434\u043b\u044f \u0438\u043c\u0451\u043d \u0440\u044f\u0434\u043e\u0432 \u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445\nTABLE_ROWNAMES_STYLE &lt;- CellStyle(wb) + Font(wb, isBold=TRUE)\nTABLE_COLNAMES_STYLE &lt;- CellStyle(wb) + Font(wb, isBold=TRUE) +\n  Alignment(wrapText=TRUE, horizontal=&quot;ALIGN_CENTER&quot;) +\n  Border(color=&quot;black&quot;, position=c(&quot;TOP&quot;, &quot;BOTTOM&quot;), \n         pen=c(&quot;BORDER_THIN&quot;, &quot;BORDER_THICK&quot;))\n\n# \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 \u043b\u0438\u0441\u0442\nsheet &lt;- createSheet(wb, sheetName = names[2])\n\n# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443\naddDataFrame(incorrect_df_filtered, \n             sheet, startRow=1, startColumn=1,  row.names=FALSE, byrow=FALSE,\n             colnamesStyle = TABLE_COLNAMES_STYLE,\n             rownamesStyle = TABLE_ROWNAMES_STYLE)\n\n# \u041c\u0435\u043d\u044f\u0435\u043c \u0448\u0438\u0440\u0438\u043d\u0443, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\nautoSizeColumn(sheet = sheet, colIndex=c(1:ncol(incorrect_df)))\n\n# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b\naddAutoFilter(sheet, cellRange = &quot;C1:G1&quot;)\n\n# \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0442\u0438\u043b\u044c\nfo2 &lt;- Fill(foregroundColor=&quot;red&quot;)\ncs2 &lt;- CellStyle(wb, \n                 fill = fo2, \n                 dataFormat = DataFormat(&quot;@&quot;))\n\n# \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0440\u044f\u0434\u044b \u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c \u0412\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a \u043d\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c\nrowsOwner &lt;- getRows(sheet, rowIndex = (which(!incorrect_df$isOwnerCorrect) + 1))\ncellsOwner &lt;- getCells(rowsOwner, colIndex = which( colnames(incorrect_df_filtered) == &quot;Owner&quot; )) \nlapply(names(cellsOwner), function(x) setCellStyle(cellsOwner[[x]], cs2))\n\n# \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0440\u044f\u0434\u044b \u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c \u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a \u043d\u0438\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c\nrowsSubsystem &lt;- getRows(sheet, rowIndex = (which(!incorrect_df$isSubsystemCorrect) + 1))\ncellsSubsystem &lt;- getCells(rowsSubsystem, colIndex = which( colnames(incorrect_df_filtered) == &quot;Subsystem&quot; )) \nlapply(names(cellsSubsystem), function(x) setCellStyle(cellsSubsystem[[x]], cs2))\n\n# \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438\nrowsCategory &lt;- getRows(sheet, rowIndex = (which(!incorrect_df$isCategoryCorrect) + 1))\ncellsCategory &lt;- getCells(rowsCategory, colIndex = which( colnames(incorrect_df_filtered) == &quot;Category&quot; )) \nlapply(names(cellsCategory), function(x) setCellStyle(cellsCategory[[x]], cs2))\n\n# \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c\nrowsCreator &lt;- getRows(sheet, rowIndex = (which(!incorrect_df$isCreatorCorrect) + 1))\ncellsCreator &lt;- getCells(rowsCreator, colIndex = which( colnames(incorrect_df_filtered) == &quot;Creator&quot; )) \nlapply(names(cellsCreator), function(x) setCellStyle(cellsCreator[[x]], cs2))\n\n# \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b\nsaveWorkbook(wb, filenameIncorrect)<\/code><\/pre>\n<p><\/p>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0438 PowerShell\" src=\"\/wp-content\/uploads\/2019\/06\/bbe8dc7c412fbb291c5ec5ab39b40ea5.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Windows scheduller. \u041d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0430\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 R, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0430\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 R \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043b\u043e\u0433\u043e\u0432. \u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435.<\/p>\n<p>\n<b class=\"spoiler_title\">\u041a\u0443\u0441\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 R \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 Windows<\/b><\/p>\n<pre><code class=\"python\">library(taskscheduleR)\nmyscript &lt;- file.path(getwd(), &quot;all_vm.R&quot;)\n\n## \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0447\u0435\u0440\u0435\u0437 62 \u0441\u0435\u043a\u0443\u043d\u0434\u044b\ntaskscheduler_create(taskname = &quot;getAllVm&quot;, rscript = myscript, \n                     schedule = &quot;ONCE&quot;, starttime = format(Sys.time() + 62, &quot;%H:%M&quot;))\n\n## \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0432 09:10\ntaskscheduler_create(taskname = &quot;getAllVmDaily&quot;, rscript = myscript, \n                     schedule = &quot;WEEKLY&quot;, \n                     days = c(&quot;MON&quot;, &quot;TUE&quot;, &quot;WED&quot;, &quot;THU&quot;, &quot;FRI&quot;),\n                     starttime = &quot;02:00&quot;)\n\n## \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0438\ntaskscheduler_delete(taskname = &quot;getAllVm&quot;)\ntaskscheduler_delete(taskname = &quot;getAllVmDaily&quot;)\n\n# \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u0441\u0442\u0440\u043e\u0447\u043a\u0438)\ntail(readLines(&quot;all_vm.log&quot;), sep =&quot;n&quot;, n = 4)<\/code><\/pre>\n<p><\/p>\n<h4 id=\"otdelno-pro-bd\">\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e \u0411\u0414<\/h4>\n<p><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u0442\u0430\u043b\u0438 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u0442\u0443, \u043a\u043e\u0433\u0434\u0430 \u0412\u041c \u0431\u044b\u043b\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0430, \u0430 \u043b\u043e\u0433\u0438 \u0432 vCenter \u0443\u0436\u0435 \u043f\u043e\u0442\u0451\u0440\u043b\u0438\u0441\u044c. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0438 \u043d\u0435 \u0447\u0438\u0441\u0442\u0438\u0442 (\u0447\u0438\u0441\u0442\u0438\u043c \u0440\u0443\u043a\u0430\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043d\u0430\u0439\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0412\u041c \u043d\u0435\u0442. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043a\u0440\u0443\u0442\u043e.<\/p>\n<p><\/p>\n<p>\u0417\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0411\u0414.<\/p>\n<p><\/p>\n<p>\u041d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0448\u0451\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b MS SQL SERVER \u2014 system-versioned temporal table. \u0415\u0433\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u042b\u0435 (\u043d\u0435 \u0432\u0440\u0415\u043c\u0435\u043d\u043d\u044b\u0435) \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/tables\/temporal-tables?view=sql-server-2017\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Microsoft<\/a><\/noindex>. <\/p>\n<p><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u2014 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0438 SQL Server \u0441\u043e\u0437\u0434\u0430\u0451\u0442 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 datetime \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 (\u0434\u0430\u0442\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0434\u0430\u0442\u0443 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0436\u0438\u0437\u043d\u0438 \u0437\u0430\u043f\u0438\u0441\u0438) \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438, \u043f\u0443\u0442\u0451\u043c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043b\u0438\u0431\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u043b\u0438\u0431\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0412\u041c \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <\/p>\n<p><\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443. \u0422.\u0435. \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0430\u0434\u043e \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0441 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u0440\u044f\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430.<\/p>\n<p><\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430 R \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b \u0431\u044b \u043d\u043e\u0432\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u0432\u0441\u0435\u043c \u0412\u041c \u0441 \u0442\u043e\u0439, \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0411\u0414 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0430 \u0432 \u043d\u0435\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0438. \u041a\u043e\u0434 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0445\u0438\u0442\u0440\u044b\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 compareDF, \u043d\u043e \u0435\u0433\u043e \u044f \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0438\u0436\u0435.<\/p>\n<p>\n<b class=\"spoiler_title\">\u041a\u043e\u0434 \u043d\u0430 R \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0411\u0414<\/b><\/p>\n<pre><code class=\"python\"># \u041f\u043e\u0434\u0446\u0435\u043f\u043b\u044f\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b\nlibrary(odbc)\nlibrary(compareDF)\n\n# \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\ncon &lt;- dbConnect(odbc(),\n                 Driver = &quot;ODBC Driver 13 for SQL Server&quot;,\n                 Server = DBParams$server,\n                 Database = DBParams$database,\n                 UID = DBParams$UID,\n                 PWD = DBParams$PWD,\n                 Port = 1433)\n\n#### \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 - \u0441\u043e\u0437\u0434\u0430\u0451\u043c. ####\n\nif (!dbExistsTable(con, DBParams$TblName)) {\n  #### \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 ####\n  create &lt;- dbSendStatement(\n    con,\n    paste0(\n      'CREATE TABLE ',\n      DBParams$TblName,\n      '(\n    [Id] [int] NOT NULL PRIMARY KEY CLUSTERED,\n    [VM.Name] [varchar](255) NULL,\n    [Cluster] [varchar](255) NULL,\n    [Esxi.Host] [varchar](255) NULL,\n    [IP.Address.1] [varchar](255) NULL,\n    [IP.Address.2] [varchar](255) NULL,\n    [IP.Address.3] [varchar](255) NULL,\n    [IP.Address.4] [varchar](255) NULL,\n    [IP.Address.5] [varchar](255) NULL,\n    [IP.Address.6] [varchar](255) NULL,\n    [vCPU] [int] NULL,\n    [CPU.Sockets] [int] NULL,\n    [Core.per.Socket] [int] NULL,\n    [RAM..GB.] [int] NULL,\n    [Total.HDD..GB.] [int] NULL,\n    [Power.State] [varchar](255) NULL,\n    [OS] [varchar](255) NULL,\n    [Boot.Time] [varchar](255) NULL,\n    [VMTools.Status] [varchar](255) NULL,\n    [VMTools.Version] [int] NULL,\n    [VMTools.Version.Status] [varchar](255) NULL,\n    [VMTools.Running.Status] [varchar](255) NULL,\n    [Creation.Date] [varchar](255) NULL,\n    [Creator] [varchar](255) NULL,\n    [Category] [varchar](255) NULL,\n    [Owner] [varchar](255) NULL,\n    [Subsystem] [varchar](255) NULL,\n    [IP.s] [varchar](255) NULL,\n    [vCenter.Name] [varchar](255) NULL,\n    DateFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL,\n    DateTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL,\n    PERIOD FOR SYSTEM_TIME (DateFrom, DateTo)\n        ) ON [PRIMARY]\n        WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = ', DBParams$TblHistName,'));'\n    )\n  )\n\n  # \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\n  dbClearResult(create)\n\n} # if\n\n#### \u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 ####\n\n# \u041e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\nallVM_db_con &lt;- tbl(con, DBParams$TblName) \n\n#### \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b ####\n\n# \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f)\nallVM_db &lt;- allVM_db_con %&gt;% \n  select(c(-&quot;DateTo&quot;, -&quot;DateFrom&quot;)) %&gt;% \n  collect()\n\n# \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u043f\u043e Id\n# \u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 -, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 +, \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 - \u0438 +\nctable_VM &lt;- fullXslx_df %&gt;% \n  compare_df(allVM_db, \n             c(&quot;Id&quot;))\n\n#### \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a ####\n\n# \u0412\u044b\u0434\u0438\u0440\u0430\u0435\u043c Id \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a, \u0437\u0430\u043f\u0438\u0441\u0438 \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0434\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \nremove_Id &lt;- ctable_VM$comparison_df %&gt;% \n  filter(chng_type == &quot;-&quot;) %&gt;%\n  select(Id)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 (\u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u0442 - \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e)\nif (remove_Id %&gt;% nrow() &gt; 0) {\n\n  # \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\n  delete &lt;- dbSendStatement(con, \n                        paste0('\n                               DELETE \n                               FROM ',\n                               DBParams$TblName,\n                               ' WHERE &quot;Id&quot;=?\n                               ') # paste\n                        ) # send\n\n  # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\n  dbBind(delete, remove_Id)\n\n  # \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\n  dbClearResult(delete)\n\n} # if\n\n#### \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a ####\n\n# \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c.\nallVM_add &lt;- ctable_VM$comparison_df %&gt;% \n  filter(chng_type == &quot;+&quot;) %&gt;% \n  select(-chng_type)\n\n# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c (\u0435\u0441\u043b\u0438 \u043d\u0435\u0442 - \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c)\nif (allVM_add %&gt;% nrow() &gt; 0) {\n  # \u041f\u0438\u0448\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\n  dbWriteTable(con,\n               DBParams$TblName,\n               allVM_add,\n               overwrite = FALSE,\n               append = TRUE)\n\n} # if\n\n#### \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0441\u043a\u043e\u043d\u043d\u0435\u043a\u0442 ####\ndbDisconnect(con)<\/code><\/pre>\n<p><\/p>\n<h4 id=\"itogo\">\u0418\u0442\u043e\u0433\u043e<\/h4>\n<p><\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0431\u044b\u043b \u043d\u0430\u0432\u0435\u0434\u0451\u043d \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0412\u041c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043b\u0443\u0436\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\u043c \u0438 \u0440\u0435\u0434\u043a\u0430\u044f \u0412\u041c \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a 2 \u0434\u043d\u044f \u043f\u043e\u0434\u0440\u044f\u0434.<\/p>\n<p><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u0437\u0430\u0434\u0435\u043b \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p><\/p>\n<p>\u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 &quot;\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435&quot;, \u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u043c \u041f\u041e, \u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0444\u0430\u043a\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439.<\/p>\n<p><\/p>\n<p>R \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0439 &quot;\u043f\u0440\u043e\u043a\u043b\u0430\u0434\u043a\u043e\u0439&quot; \u043c\u0435\u0436\u0434\u0443 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0438 PowerShell\" src=\"\/wp-content\/uploads\/2019\/06\/a88e0656a26e91c25db37582a8ce76da.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/454400\/\">habr.com<\/a><\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439. \u0423\u0436\u0435 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432), \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e). \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u0434\u043e\u043c. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 1500 \u0412\u041c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e 3-\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439. \u0423\u0436\u0435 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432), \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e). \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u0434\u043e\u043c. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 1500 \u0412\u041c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e 3-\u043c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0438 PowerShell | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439. \u0423\u0436\u0435 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432), \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e). \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u0434\u043e\u043c. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 1500 \u0412\u041c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e 3-\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:01:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:01:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47T\u00e4gliche Berichte \u00fcber den Zustand virtueller Maschinen mit R und PowerShell | ProHoster","description":"Einf\u00fchrung Guten Tag. Seit einem halben Jahr l\u00e4uft bei uns ein Skript (genauer gesagt, eine Reihe von Skripten), das Berichte \u00fcber den Zustand virtueller Maschinen (und nicht nur) generiert. Ich habe beschlossen, meine Erfahrungen bei der Erstellung und den Code zu teilen. Ich freue mich auf konstruktive Kritik und darauf, dass dieses Material f\u00fcr jemanden n\u00fctzlich sein k\u00f6nnte. Bedarfsermittlung Wir haben viele virtuelle Maschinen (ca. 1500 VMs, verteilt auf 3)","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R \u0438 PowerShell | ProHoster","og:description":"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0414\u0435\u043d\u044c \u0434\u043e\u0431\u0440\u044b\u0439. \u0423\u0436\u0435 \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432), \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e). \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u0434\u043e\u043c. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 1500 \u0412\u041c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e 3-\u043c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ezhednevnye-otchyoty-po-sostoyaniyu-virtualnyh-mashin-s-pomoshhyu-r-i-powershell","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:01:10+00:00","article:modified_time":"2019-10-31T19:01:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34901","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 21:01:40","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:13:26","updated":"2026-01-21 21:01:40"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/34901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=34901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/34901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/26275"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=34901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=34901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=34901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}