Сценарии PowerShell для Hyper-V и WMI. Использование компонента интеграции обмена парами ключ-значение (KVP Exchange integration component). Часть 2 — Добавление новых элементов из родительского раздела


? ??????? ??? ?? ??????????? «????????? ?????????? ?????? ?????? ????-????????» (Key Value Pair, KVP Exchange Integration Component). ?????? ?? ?????, ????? ??? ???? ?????????? (intrinsic) KVP, ??? ???????? ??????? ???????? KVP ? ??? ?? ????????????.


???? KVP ???????? ?? ????????????? ??????? ? ????? ?????????? ? ???????? ?? (Fully Qualified Domain Name, OS Version, Processor Architecture ? ?.?.). ???? ????? KVP, ????????? ?? ???????? ?? ? ?????????? ?????????? ? ???????????? ??????? — ?????, ??? HostName, PhysicalHostName, PhysicalHostNameFullyQualified ? VirtualMachineName. ??? ???????? ???????? ? ??????? ? ????? «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters».


? ??????? KVP ?? ????? ?? ????????????? ??????? ???????? ????? ? ?????? ???????? ??, ? ????? ????????? ? ???????????? ??????? ?????, ?????????? ?? ????????? ???????. ??? ??????????? ? ??????? ?????? AddKvpItems ?????? Msvm_VirtualSystemManagementService. ?????? ?? ?????????? ?????? ???????? ?????? ?? ????????????? ??????? ? ????????.


???????? PowerShell Add-KVP.ps1







$ComputerName = "localhost"


$VMManagementService = Get-WmiObject -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization" -ComputerName $ComputerName


$Vm = Get-WmiObject -Namespace root\virtualization -ComputerName $ComputerName -Query "Select * From Msvm_ComputerSystem Where ElementName='Vista'"


$Kvp = Get-WmiObject -Namespace root\virtualization -ComputerName $ComputerName -Query "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent"


$Msvm_KvpExchangeDataItemPath = "\\$ComputerName\root\virtualization:Msvm_KvpExchangeDataItem"


$Msvm_KvpExchangeDateItem = ([WmiClass]$Msvm_KvpExchangeDataItemPath).CreateInstance()


$Msvm_KvpExchangeDateItem.Name = "Test4"


$Msvm_KvpExchangeDateItem.Data = "Testing"


$Msvm_KvpExchangeDateItem.Source = 0


$VMManagementService.AddKvpItems($Vm, $Msvm_KvpExchangeDateItem.PSBase.GetText(1))


?? ???????? ?? ????????????? ??????? ???? «Test4» ? ?????? ????? ??????? ? ??????? ???????? ?? ?? ?????? «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual Machine\External».


? ????????? ?????? ?? ????????? ? ???, ??? ???????????? ????? ??????????? ? ???????? ???????, ? ????? ? ???, ??? ?? ????? ??????? ?? ????????????? ???????.

Comments (2)

  1. Alex A says:

    Нет.

    НИКАКОГО доступа из одной ОС в другую, кроме как по сети нет. Виртуализация подразумевает полную изоляцию.

    Технически, ВЫКЛЮЧИВ виртуальную машину можно подмонтировать VHD диск, подключить ветвь реестра system и поставить в ней статические адреса, но это нужно скриптовать, и не поддерживается Microsoft.

  2. Alexandr Belov says:

    Привет. Можно ли задать сетевые настройки (IP, DNS, и тд) из родительской ос в гостевой OS, если да, то как это сделать?

Skip to main content