Автоматизация vmware; Vix API и C#

Порядка недели назад мне потребовалось управлять виртуальной машиной vmware программным путем, желательно из C#. Решение было найдено на CodeProject.

Автор реализовал Vix API на C# и выпустил DLL. Я кратко расскажу об этом проекте на русском языке.

У Vmware имеется мощный API, который позволяет управлять состоянием виртуальной машины, а также запускать внутри нее сторонние приложения, копировать файлы с хоста на гостевую систему и обратно.

API состоит из 2х частей:

  • VMWare Virtual Infrastructure SDK —  набор инструментов и API который позволяет управлять инфраструктурой VMWare. Этот набор инструментов содержит управляемые обертки для SOAP интерфейса, обеспечивающие развертывание VMWare. Эти инструменты в основном нацелены на управление VMWare ESX или VirtualCenter
  • VMWare VIX API. VIX API позволяет разработчиком писать программы и скрипты, которые автоматизируют операции над виртуальными машинами, а также гостевыми операционными системами внутри виртуальных машин. Оно работает на Windows и Linux и поддерживает управление VMware Server, Workstation и Virtual Infrastructure (ESX и vCenter). Существуют связи с  C, Perl, и COM (Visual Basic, VBscript, C#).

Использование библиотеки

Чтобы использовать библиотеку или собрать, или же запустить ее из исходного кода, вы должны установить следующее программное обеспечение от VMWare:

  • VMWare VIX. Это SDK, находится по адресу http://www.vmware.com/download/sdk/vmauto.html. Новая версия 1.6.2 требуется для поддержки VI.
  • VMWare Workstation 6.5 или окружение VI (например ESX), или и то и то.

В своем проекте добавьте ссылку, на Vestris.VMWareLib.dll и namespace reference.

Сейчас вы можете соединяться с локальной VMWare Workstation или с удаленной ESX server и выполнять задачи VMWare. Ниже представлен пример, которы создает, восстанавливает, включает и удаляет снепшоты на VMWare Workstation.

Если вам интересна реализация, то она описанна в оригинальной статье.

 

1 Response

  1. Сергей 14.12.2014 / 01:08

    Подскажите пожалуйста, что означает сделать ссылку на namespace reference?

    Посмотрел множество примеров, но всегда возникает ошибка на virtualMachine.Login(«Administrator», «password»);

    Ничего кроме включение сделать не могу, везде эксепшины вылазят. Можете чтонибудь подсказать?

Добавить комментарий