Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Get VM - исключить из списка Linux (http://forum.oszone.net/showthread.php?t=302978)

breakfruit 28-07-2015 13:18 2533335

Get VM - исключить из списка Linux
 
Комрады, второй день бьюсь никак не могу.

Есть список вывода Get-VM
Код:

PS C:\Windows\system32> get-vm

Name                        State CPUUsage(%) MemoryAssigned(M) Uptime  Status
----                        ----- ----------- ----------------- ------  ------
adWindows 8.1                Off  0          0                00:00:00 Operating normally
CentOS 7                    Off  0          0                00:00:00 Operating normally
Debian 8.0                  Off  0          0                00:00:00 Operating normally
FreeBSD 10.1                Off  0          0                00:00:00 Operating normally
OpenSUSE 13.1                Off  0          0                00:00:00 Operating normally
Oracle Linux 7u1            Off  0          0                00:00:00 Operating normally
RHEL Server 7.0              Off  0          0                00:00:00 Operating normally
Ubuntu 14.04.2 LTS          Off  0          0                00:00:00 Operating normally
WEBWindows Server 2012 R2    Off  0          0                00:00:00 Operating normally
WEBWS2012 - IIS              Off  0          0                00:00:00 Operating normally
Wind_web_ows 8.1 - clone - 1 Off  0          0                00:00:00 Operating normally

Необходимо для скрипта выбрать только в Windows-based виртуалки. Как я понял, Get-VM такой способности не имеет, так как (ну, лично у меня) не получилось отфильтровать выборку в переменную. Может кто поможет?

Был бы очень признателен.

Kazun 28-07-2015 14:23 2533351

Если установлен integration services в гостевой ОС, то можно получить данные через WMI. - http://blogs.msdn.com/b/taylorb/arch...n-hyper-v.aspx

Код:

Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_ComputerSystem -Filter "Caption='Virtual Machine'" | Foreach {
        $vm = $_
        $os = $null
        try {
                $vm.GetRelated("Msvm_KvpExchangeComponent").GuestIntrinsicExchangeItems | % { 
                        $GuestExchangeItemXml = ([XML]$_).SelectSingleNode("/INSTANCE/PROPERTY[@NAME='Name']/VALUE[child::text()='OSName']")
                       
                        if ($GuestExchangeItemXml -ne $null)
                        {
                                $os = $GuestExchangeItemXml.SelectSingleNode("/INSTANCE/PROPERTY[@NAME='Data']/VALUE/child::text()").Value
                        }   
                }
        }
        catch {
        }
        [pscustomobject]@{"Name"=$vm.ElementName;"OS"=$os}
}


breakfruit 28-07-2015 14:25 2533352

Kazun, хороший воркэраунд, но не в случае, если оные отсутсвтуют внутри ВМ :\

breakfruit 04-08-2015 18:03 2536869

И этот скрипт несовсем то, что нужно делает. Нужно именно фильтрацию организовать. Т.е. Выборка того, что нужно из списка ОСей


Время: 22:45.

Время: 22:45.
© OSzone.net 2001-