2015-01-16 2 views
0

Короткий вопрос: может ли VM использовать powershell, чтобы получить свое имя?Использование Powershell для получения собственного имени vm

У меня есть среда, где у меня есть 12 одинаковых наборов виртуальных машин. Каждый набор имеет один сервер перехода, а соглашение об именах: ## _ APP_SET #, где ## - соответствующее устройство NAT, а SET # сообщает мне набор виртуальных машин.

На этой виртуальной машине APP я создал меню, которое использует учетную запись на внешнем vCenter для включения и выключения виртуальных машин в наборе. Таким образом, изнутри виртуальной машины он подключается к родительскому vCenter и запускает действие на другой виртуальной машине в наборе. Проблема в том, что у меня есть имена виртуальных машин, жестко закодированные в скрипте. Например, если я на 01_APP_SET1, у меня есть куча записей для 01_MACHINENAME_SET1, и на 02_APP_SET2, у меня есть записи для 02_MACHINENAME_SET2 и т.д.

Я в настоящее время управляет 12 различных сценариев на 12 различных APP виртуальных машин. Я надеюсь, что сценарий будет более общим, где VM называет get-vm на себе и анализирует предыдущий ## и завершающий SET #, но не имеет большой удачи, не получая список систем, называемых APP, с get-vm APP.

Я думаю, что лучший способ справиться с этим - предоставить каждой APP VM имя хоста, соответствующее его имени, в vCenter, а затем разобрать информацию таким образом.

ответ

0

Есть ли какая-то идентифицируемая информация, уникальная для виртуальной машины APP, такая как внешний IP-адрес, чтобы иметь возможность входа в систему вне частной сети для Set?

Возможно, что-то подобное было бы полезно:
$ip = (ipconfig | Select-String "IPv4 Address" | Select-String "192.168.1").Line.Replace("IPv4 Address. . . . . . . . . . . :","") $vm = get-vm | ?{$_.Guest.IPAddress -like $ip}

+0

Это на самом деле одна из проблем. Все они имеют одинаковый IP-адрес. Каждый набор находится в собственной изолированной сети. Помимо имен виртуальных машин, изображения идентичны. Они также должны иметь одинаковое имя хоста, но я думаю, что могу дать им все имена хостов, соответствующие имени виртуальной машины, а затем создать запись файла хоста в виде псевдонима. – afterbyrner

+0

Если вы можете переименовать машины в соответствии с их именем виртуальной машины, вы можете использовать $ compname = $ env: имя_компьютера, а затем Get-VM $ compname. – Hive

0

Или группа виртуальных машин с tags в VC и использовать Invoke-VMScript копаться других гостей, по мере необходимости.