dallen16
2007-08-01 17:48:46 UTC
I'm about day 5 into using Powershell... and I'm trying to figure out
how to use 'SWbemRefresher' to monitor local network traffic from within
a Powershell script.
The classic VBscript solution starts as follows...
******
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService,
"Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
******
Translated to Powershell should look something like the following... but
the first line is "invalid" because -class wants one of the 900+ WMI
class names.
******
$objWMIService = get-wmiobject -class "winmgmts" -namespace "root\cimv2"
-computername '.'
$objRefresher = new-object -com "WbemScripting.SWbemRefresher"
$colItems = $objRefresher.AddEnum($objWMIService,
"Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
******
I can't figure out which wmiobject class to specify... and how to
specify impersonation level...
I've tried a few of the more obvious looking class names
("Win32_Service", "CIM_Service", "Win32_Perf", ...) but these either
hang on the get-wmiobject call or generate an exception with the AddEnum
call like the following.
Exception calling "AddEnum" with "2" argument(s): "Type mismatch.
(Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
Or is there another way altogether to accomplish the same thing?
Any help greatly appreciated!!!
Regards,
... Dewey
how to use 'SWbemRefresher' to monitor local network traffic from within
a Powershell script.
The classic VBscript solution starts as follows...
******
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum _
(objWMIService,
"Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
******
Translated to Powershell should look something like the following... but
the first line is "invalid" because -class wants one of the 900+ WMI
class names.
******
$objWMIService = get-wmiobject -class "winmgmts" -namespace "root\cimv2"
-computername '.'
$objRefresher = new-object -com "WbemScripting.SWbemRefresher"
$colItems = $objRefresher.AddEnum($objWMIService,
"Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
******
I can't figure out which wmiobject class to specify... and how to
specify impersonation level...
I've tried a few of the more obvious looking class names
("Win32_Service", "CIM_Service", "Win32_Perf", ...) but these either
hang on the get-wmiobject call or generate an exception with the AddEnum
call like the following.
Exception calling "AddEnum" with "2" argument(s): "Type mismatch.
(Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
Or is there another way altogether to accomplish the same thing?
Any help greatly appreciated!!!
Regards,
... Dewey