2013-10-15 5 views
1

Я уже ломаю голову над этим.с использованием WMI для получения информации о портале и ipv4-адреса. с ps и python

что я хочу сделать небольшую питона программу, которая делает utput список ipadress с их соответствующими NIC

в PowerShell это возможно, делая это, я нашел этот сценарий в Интернете:

function Get-IscsiPortNumber { 
    $PortalSummary = @() 
    $portalInfo = get-wmiobject -namespace root\wmi -class msiscsi_portalinfoclass 
    $eScriptBlock ={([Net.IPAddress]$_.ipaddr.IPV4Address).IPAddressToString} 
    $customLabel = @{Label="IpAddress"; expression = $eScriptBlock} 
    foreach ($portal in $portalInfo) { 
     foreach ($p in ($portal.portalinformation)) { 
      $CurrentPort = New-Object PsObject -Property @{ 
       Instance = ($portal.instancename).ToUpper() 
       Port  = $p.port 
       IP  = ([net.ipaddress]$p.ipaddr.IpV4Address).IPAddressToString 
      } 
      $PortalSummary += $CurrentPort 
     } 
    } 
    return $PortalSummary 
} 

Get-IscsiPortNumber | ft -AutoSize 

Это не работает со всеми версиями Windows. например, я получаю сообщение об ошибке на сервере Windows 2003 окно:

PS C:\Documents and Settings\Administrator\Desktop> .\test.ps1 
New-Object : A parameter cannot be found that matches parameter name 'Property'. 
At C:\Documents and Settings\Administrator\Desktop\test.ps1:8 char:57 
+    $CurrentPort = New-Object PsObject -Property <<<< @{ 
New-Object : A parameter cannot be found that matches parameter name 'Property'. 
At C:\Documents and Settings\Administrator\Desktop\test.ps1:8 char:57 
+    $CurrentPort = New-Object PsObject -Property <<<< @{ 
New-Object : A parameter cannot be found that matches parameter name 'Property'. 
At C:\Documents and Settings\Administrator\Desktop\test.ps1:8 char:57 
+    $CurrentPort = New-Object PsObject -Property <<<< @{ 
New-Object : A parameter cannot be found that matches parameter name 'Property'. 
At C:\Documents and Settings\Administrator\Desktop\test.ps1:8 char:57 
+    $CurrentPort = New-Object PsObject -Property <<<< @{ 
PS C:\Documents and Settings\Administrator\Desktop> 

У меня есть почти нулевой опыт работы с пс, так что я действительно не знаю, почему ... последние пару часов я пытался исследовать с пс WMI и wmi objectbrowser. В objectbrowser я могу отлично видеть всю статистику, которая мне нужна. см. скриншот. Поскольку я в буквальном смысле не знаю, как массивы и свойства и т. Д. Работают в ps, я надеюсь, что кто-то может мне помочь.

рассматривает

http://i.imgur.com/iEbI3ok.png

+2

Что означает «не работает»? Сообщение об ошибке? Неверный результат? Неожиданный результат? – vonPryz

+0

да простите за то, что не уточнил. Я добавил код ошибки в исходное сообщение! –

+0

Можете ли вы предоставить версию PowerShell для вашего сервера 2003 года? – JPBlanc

ответ

0

Это, возможно, опечатка, но у вас есть синтаксические ошибки здесь:

Вы можете попробовать заменить:

 $CurrentPort = New-Object PsObject -Property @{ 
      Instance = ($portal.instancename).ToUpper() 
      Port  = $p.port 
      IP  = ([net.ipaddress]$p.ipaddr.IpV4Address).IPAddressToString 
     } 

по

 $CurrentPort = New-Object PsObject -Property @{ ` 
      Instance = ($portal.instancename).ToUpper();` 
      Port  = $p.port;` 
      IP  = ([net.ipaddress]$p.ipaddr.IpV4Address).IPAddressToString ` 
     } 

или

$CurrentPort = New-Object PsObject -Property @{Instance = ($portal.instancename).ToUpper();Port= $p.port;IP= ([net.ipaddress]$p.ipaddr.IpV4Address).IPAddressToString   } 
+0

благодарю вас за помощь, но я получаю такую ​​же ошибку! –