1

iSCSI イニシエーターの IP アドレスとそれぞれの ID のリストを出力するこの小さな PS スクリプトがあります。今、私はこの情報を使ってもっと広範なことをしたいと思っています.PSとその仕組みをよく知らないので、スクリプトをPythonに移行してそこから続けたいと思います.

これで、PS スクリプトは WMI 経由でこれらを取得します。ここにあります:

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 @{ `
                NetID     = $p.port;`
                IP       = ([net.ipaddress]$p.ipaddr.IpV4Address).IPAddressToString `
            } 
            $PortalSummary += $CurrentPort
        }
    }
    return $PortalSummary
}

Get-IscsiPortNumber | ft -AutoSize

Pythonでは、このようなことを始めましたが、実行中に常にエラーが発生します:

import wmi
test = wmi.WMI(namespace='root\wmi',moniker='msiscsi_portalinfoclass')

どちらが言う:

Traceback (most recent call last):
  File "C:\Users\rg\Desktop\diskchecktptest\getnicids.py", line 2, in <module>
    test = wmi.WMI(namespace='root\wmi',moniker='msiscsi_portalinfoclass')
  File "C:\Python27\lib\site-packages\wmi.py", line 1290, in connect
    handle_com_error ()
  File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
    raise klass (com_error=err)
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147217406, 'OLE error 0x80041002', No
ne, None)>

この件についてある程度の知識がある人が私を啓発してくれることを願っています

4

1 に答える 1

1

私はそれを考え出した。

from win32com.client import GetObject

def Int2IP(ipnum):
    o1 = int(ipnum / 16777216) % 256
    o2 = int(ipnum / 65536) % 256
    o3 = int(ipnum / 256) % 256
    o4 = int(ipnum) % 256
    return '%(o4)s.%(o3)s.%(o2)s.%(o1)s' % locals()

objWMI = GetObject('winmgmts:\\\\.\\root\\WMI').InstancesOf('MSiSCSI_PortalInfoClass')
for obj in objWMI:
    for p in obj.PortalInformation:
        print str(p.port) + ' | ' + Int2IP(p.ipaddr.IpV4Address) + '\n')

フォーマットせずにIPを数値として保存するのはかなり奇妙ですが...

于 2014-05-23T05:46:57.707 に答える