Я пытаюсь получить некоторые параметры из xenstore с помощью WMI (в частности, я надеялся использовать этот скрипт для изменения IP-адреса ВМ после ее создания).
Согласно этой статье, кажется, что я должен просто сделать что-то вроде:
Из интерфейса командной строки xenserver:
xe vm-param-set uuid=e66660e9-85e1-1f99-3229-1dfa7d1065a8 xenstore-data:data/TempValue=test
затем в сценарии powershell:
$base = gwmi -n root\wmi -cl CitrixXenStoreBase
$sid = $base.AddSession("MyNewSession")
$session = gwmi -n root\wmi -q "select * from CitrixXenStoreSession where SessionId=$($sid.SessionId)"
$output = $session.GetValue("data/TempValue").value
log "$output"
Но это, похоже, не дает ожидаемого значения.
Одна вещь, которую я заметил, это то, что если я устанавливаю значение из сценария powershell, он, кажется, последовательно извлекает значение при запуске предыдущего сценария:
$base = gwmi -n root\wmi -cl CitrixXenStoreBase
$sid = $base.AddSession("MyNewSession")
$session = gwmi -n root\wmi -q "select * from CitrixXenStoreSession where SessionId=$($sid.SessionId)"
$session.SetValue("data/TempValue","This is a string")
Кажется, что заданное значение сохраняется между сеансами, но когда я возвращаюсь к CLI и пытаюсь найти значение, я ничего не получаю:
xe vm-param-list uuid=e66660e9-85e1-1f99-3229-1dfa7d1065a8 | grep TempValue
Итак, все сводится к тому, что я хотел бы:
- Узнайте, как получить параметр xenstore в сценарии WMI после выполнения команды xe vm-param-set.
- Узнайте, как установить параметр в интерфейсе командной строки xenserver так же, как $session.SetValue работает в приведенном выше примере.