Перезагрузка windows 7 если не найдена PCI-e карта. — не дописано

После превращения из видеосервера в ферму с виртуалками на XenCloudServer нужно выделить машину под Windows 7 для 3 карт Devline на PCI-e. Проблема заключаешся в том, что виртаулка при проброса pci-e карт сначала видит ТОЛЬКО одну, а после второй перезагрузки видит все 3!

Решил написать скрипт в несколько строк для проверки наличия 3х карт. Если их нет то идем в ребут.
Брал за основу нарытый в инетах скрипт:

<# 
.SYNOPSIS 
    Uses Win32_PNPEntity to return information about non-working devices.
.DESCRIPTION 
    This script calls Get-WmiObject to retrieve plug and play details,  
    then formats and displays non-working devices. The script also has to 
    work around how WMI returns 0 and 1 object (i.e. no $obj.count). 
     
    This is also sample 6 on http://msdn.microsoft.com/en-us/library/aa394587(VS.85).aspx 
    recoded with PowerShell. 
.NOTES 
    File Name  : Get-NonWorkingDevices.ps1 
    Author     : Thomas Lee - tfl@psp.co.uk 
    Requires   : PowerShell V2 CTP3 
.LINK 
    Script posted to: 
    http://www.pshscripts.blogspot.com 
    Original MSDN Page 
    http://msdn.microsoft.com/en-us/library/aa394587(VS.85).aspx 
.EXAMPLE 
    PS C:\foo> Get-NonWorkingDevices.ps1 
    No bad devices on Cookham8 
.EXAMPLE 
    PS C:\foo> Get-NonWorkingDevices.ps1 
    Total Bad devices on Cookham8: 1 
    Name           : NETGEAR FA311v2 PCI Adapter - Virtual Network 
    Class Guid     : {4d36e972-e325-11ce-bfc1-08002be10318} 
    Description    : Microsoft Virtual Network switch Adapter 
    Device ID      : ROOT\VMS_MP\0001 
    Manufacturer   : 
    PNP Device Id  : ROOT\VMS_MP\0001 
    Service Name   : VMSMP 
#> 
 
### 
#   Start of Script 
### 
 
# Get non-working devices: 
$BadDevices = Get-WmiObject Win32_PNPEntity | Where {$_.ConfigManagerErrorcode -ne 0} 
 
# Display bad devices  
$Hostname = Hostname 
if (!$BadDevices) { 
   "No bad devices on {0}" -f $Hostname 
}  # end if 
else { 
if (!$BadDevices.Count) {$Count=1} else {$Count=$BadDevices.count} 
"Total Bad devices on {0}: {1}" -f $Hostname, $Count 
foreach ($Device in $BadDevices) { 
"Name           : {0}" -f $Device.Name 
"Class Guid     : {0}" -f $Device.Classguid 
"Description    : {0}" -f $Device.Description 
"Device ID      : {0}" -f $Device.Deviceid 
"Manufacturer   : {0}" -f $Device.Manufactuer 
 
"PNP Device Id  : {0}" -f $Device.PNPDeviceID 
"Service Name   : {0}" -f $Device.Service 
"" 
} # End of ForEach 
}  # End of Else 

 

Мое ваяние благо мы знаем

PNPDeviceID

  1. Пока комментариев нет.

  1. Пока что обратных ссылок нет.