4

WMI から入手できる PCoIP 統計情報を取得しようとしています。WMIC には次のコマンドを使用します。

 wmic path Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics

またはpowershellを使用

powershell Get-WmiObject -namespace "root\cimv2" -computername computer01 -class Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics

ただし、別のプロセスを介してフォークされたいずれかのコマンドを実行しようとすると、この場合は python であり、stdout をパイプすると、以下のような無効なクラス エラーが発生します。

 Get-WmiObject : Invalid class
At line:1 char:14
+ Get-WmiObject <<<  -namespace root\cimv2 -computername computer01 -class
 Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

それが役立つ場合、コマンドプロンプトからのpowershellコマンドの出力は次のとおりです

__GENUS                   : 2
__CLASS                   : Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkS
                            tatistics
__SUPERCLASS              : Win32_PerfRawData
__DYNASTY                 : CIM_StatisticalInformation
__RELPATH                 : Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkS
                            tatistics.Name="PCoIP Session"
__PROPERTY_COUNT          : 19
__DERIVATION              : {Win32_PerfRawData, Win32_Perf, CIM_StatisticalInfo
                            rmation}
__SERVER                  : DEMO-VSGA-WS01
__NAMESPACE               : rootcimv2
__PATH                    : \DEMO-VSGA-WS01rootcimv2:Win32_PerfRawData_Terad
                            iciPerf_PCoIPSessionNetworkStatistics.Name="PCoIP S
                            ession"
Caption                   :
Description               :
Frequency_Object          : 0
Frequency_PerfTime        : 10000000
Frequency_Sys100NS        : 10000000
Name                      : PCoIP Session
RoundTripLatencyms        : 284
RXBWkbitPersec            : 22034
RXBWPeakkbitPersec        : 4
RXPacketLossPercent       : 112
RXPacketLossPercent_Base  : 28805
Timestamp_Object          : 0
Timestamp_PerfTime        : 299873128867
Timestamp_Sys100NS        : 130641888164850000
TXBWActiveLimitkbitPersec : 1832
TXBWkbitPersec            : 75615
TXBWLimitkbitPersec       : 90000
TXPacketLossPercent       : 7
TXPacketLossPercent_Base  : 30942

私もpythonモジュールWMIを使ってみました

hostname = os.getenv('COMPUTERNAME', '')
c = wmi.WMI (hostname, namespace="root\\cimv2")
print c.Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics

次のエラーが表示されます

print c.Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics
  File "c:\users\ramesh~1\appdata\local\temp\easy_install-tlfipc\WMI-1.4.9-py2.7
-win32.egg.tmp\wmi.py", line 1147, in __getattr__
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 522, in
__getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: winmgmts://computer01/root/cimv2.Win32_PerfRawData_TeradiciP
erf_PCoIPSessionNetworkStatistics

これは、発信者のなりすましと認証レベルに関連していますか?

アップデート

powershell コマンドをバット ファイルに移動しました。CMD を介してバット ファイルを実行すると、再び正常に動作します。

PythonでPopenすると、同じエラーが表示されます。それが役立つ場合、私はPythonコードを使用しています。

p = subprocess.Popen ('bat.bat',stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print p.stdout.read()

名前空間の下にクラスを一覧表示しようとしましたが、CMD を介してバット ファイルが呼び出されたときにクラスが一覧表示され、Popen のときに、Teradici のクラスはどれも使用できませんでした。bat.bat のコマンド ラインは次のとおりです。

powershell Get-WmiObject -namespace "root\cimv2" -computername computer01 -list

これはすべて VMWare VDI (仮想デスクトップ インフラストラクチャ) 上で実行されていますが、ポリシーによる制限はありますか?

4

1 に答える 1