Sign in to follow this  
Followers 0
cookiemonster

$objWMIService.ExecQuery

8 posts in this topic

Hi,

Im trying to pull out some network adapter settings, this is my script:

$colAdapters = $objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For $objAdapter in $colAdapters
   If Not ($objAdapter.IPAddress) = " " Then
    ConsoleWrite ("  ID:                      " & $objAdapter.NetConnectionid& @CR)
        ConsoleWrite ("  Physical (MAC) address:  " & $objAdapter.MACAddress& @CR)
        ConsoleWrite ("  IP Address :             " & $objAdapter.IPAddress(0)& @CR)
    ConsoleWrite ("  IP Subnet :              " & $objAdapter.IPSubnet(0)& @CR)
    ConsoleWrite ("  IP Default Gateway :     " & $objAdapter.DefaultIPGateway(0)& @CR)
    ConsoleWrite ("  IP DNS1 :                " & $objAdapter.DNSServerSearchOrder(0)& @CR)
    ConsoleWrite ("  IP DNS2 :                " & $objAdapter.DNSServerSearchOrder(1)& @CR)
   EndIf
Next
EndFunc

The only one not working is 'NetConnectionid' which should bring back the name of the adapter is it appears in network and sharing centre, in my case this is 'Local Area Connect' but it is not returning anything. Anyone got any ideas?

Share this post


Link to post
Share on other sites



It's not working on my computer either and it doesn't work in VBScript, so I'm guessing it probably is a Windows issue.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

But in theory it should work right? any idea of any other way I can get the name of the network adapter?

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

; Generated by AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer  & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
      $Output = $Output & "AdapterType: " & $objItem.AdapterType & @CRLF
      $Output = $Output & "AdapterTypeId: " & $objItem.AdapterTypeId & @CRLF
      $Output = $Output & "AutoSense: " & $objItem.AutoSense & @CRLF
      $Output = $Output & "Availability: " & $objItem.Availability & @CRLF
      $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
      $Output = $Output & "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
      $Output = $Output & "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
      $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
      $Output = $Output & "Description: " & $objItem.Description & @CRLF
      $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
      $Output = $Output & "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
      $Output = $Output & "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
      $Output = $Output & "GUID: " & $objItem.GUID & @CRLF
      $Output = $Output & "Index: " & $objItem.Index & @CRLF
      $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
      $Output = $Output & "Installed: " & $objItem.Installed & @CRLF
      $Output = $Output & "InterfaceIndex: " & $objItem.InterfaceIndex & @CRLF
      $Output = $Output & "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
      $Output = $Output & "MACAddress: " & $objItem.MACAddress & @CRLF
      $Output = $Output & "Manufacturer: " & $objItem.Manufacturer & @CRLF
      $Output = $Output & "MaxNumberControlled: " & $objItem.MaxNumberControlled & @CRLF
      $Output = $Output & "MaxSpeed: " & $objItem.MaxSpeed & @CRLF
      $Output = $Output & "Name: " & $objItem.Name & @CRLF
      $Output = $Output & "NetConnectionID: " & $objItem.NetConnectionID & @CRLF
      $Output = $Output & "NetConnectionStatus: " & $objItem.NetConnectionStatus & @CRLF
      $Output = $Output & "NetEnabled: " & $objItem.NetEnabled & @CRLF
      $strNetworkAddresses = $objItem.NetworkAddresses(0)
      $Output = $Output & "NetworkAddresses: " & $strNetworkAddresses & @CRLF
      $Output = $Output & "PermanentAddress: " & $objItem.PermanentAddress & @CRLF
      $Output = $Output & "PhysicalAdapter: " & $objItem.PhysicalAdapter & @CRLF
      $Output = $Output & "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
      $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
      $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
      $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
      $Output = $Output & "ProductName: " & $objItem.ProductName & @CRLF
      $Output = $Output & "ServiceName: " & $objItem.ServiceName & @CRLF
      $Output = $Output & "Speed: " & $objItem.Speed & @CRLF
      $Output = $Output & "Status: " & $objItem.Status & @CRLF
      $Output = $Output & "StatusInfo: " & $objItem.StatusInfo & @CRLF
      $Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
      $Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
      $Output = $Output & "TimeOfLastReset: " & WMIDateStringToDate($objItem.TimeOfLastReset) & @CRLF
      if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
      $Output=""
   Next
Else
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_NetworkAdapter" )
Endif


Func WMIDateStringToDate($dtmDate)

    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc

its in networkadapter, not networkadapterconfiguration

Edited by boththose
1 person likes this

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

 

its in networkadapter, not networkadapterconfiguration

 

Ha, didn't even notice that when I tested it.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

; Generated by AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer  & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
      $Output = $Output & "AdapterType: " & $objItem.AdapterType & @CRLF
      $Output = $Output & "AdapterTypeId: " & $objItem.AdapterTypeId & @CRLF
      $Output = $Output & "AutoSense: " & $objItem.AutoSense & @CRLF
      $Output = $Output & "Availability: " & $objItem.Availability & @CRLF
      $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
      $Output = $Output & "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
      $Output = $Output & "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
      $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
      $Output = $Output & "Description: " & $objItem.Description & @CRLF
      $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
      $Output = $Output & "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
      $Output = $Output & "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
      $Output = $Output & "GUID: " & $objItem.GUID & @CRLF
      $Output = $Output & "Index: " & $objItem.Index & @CRLF
      $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
      $Output = $Output & "Installed: " & $objItem.Installed & @CRLF
      $Output = $Output & "InterfaceIndex: " & $objItem.InterfaceIndex & @CRLF
      $Output = $Output & "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
      $Output = $Output & "MACAddress: " & $objItem.MACAddress & @CRLF
      $Output = $Output & "Manufacturer: " & $objItem.Manufacturer & @CRLF
      $Output = $Output & "MaxNumberControlled: " & $objItem.MaxNumberControlled & @CRLF
      $Output = $Output & "MaxSpeed: " & $objItem.MaxSpeed & @CRLF
      $Output = $Output & "Name: " & $objItem.Name & @CRLF
      $Output = $Output & "NetConnectionID: " & $objItem.NetConnectionID & @CRLF
      $Output = $Output & "NetConnectionStatus: " & $objItem.NetConnectionStatus & @CRLF
      $Output = $Output & "NetEnabled: " & $objItem.NetEnabled & @CRLF
      $strNetworkAddresses = $objItem.NetworkAddresses(0)
      $Output = $Output & "NetworkAddresses: " & $strNetworkAddresses & @CRLF
      $Output = $Output & "PermanentAddress: " & $objItem.PermanentAddress & @CRLF
      $Output = $Output & "PhysicalAdapter: " & $objItem.PhysicalAdapter & @CRLF
      $Output = $Output & "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
      $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
      $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
      $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
      $Output = $Output & "ProductName: " & $objItem.ProductName & @CRLF
      $Output = $Output & "ServiceName: " & $objItem.ServiceName & @CRLF
      $Output = $Output & "Speed: " & $objItem.Speed & @CRLF
      $Output = $Output & "Status: " & $objItem.Status & @CRLF
      $Output = $Output & "StatusInfo: " & $objItem.StatusInfo & @CRLF
      $Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
      $Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
      $Output = $Output & "TimeOfLastReset: " & WMIDateStringToDate($objItem.TimeOfLastReset) & @CRLF
      if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
      $Output=""
   Next
Else
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_NetworkAdapter" )
Endif


Func WMIDateStringToDate($dtmDate)

    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc

its in networkadapter, not networkadapterconfiguration

That would make perfect sense, many thanks.

Also do you know how I can do a like statement rather than where, for example I want to do:

SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPAddress LIKE '192.168%'

But this doesnt work, does this level support like statements?

According to MSDN I can use this but I cant make it work....

http://msdn.microsoft.com/en-us/library/aa392263(v=vs.85).aspx

Edited by cookiemonster

Share this post


Link to post
Share on other sites

Thats definitely wrong, because you are essentially trying to address an array by its name with the expectation of affecting the first entry...in SQL.

I would put the If statement in the loop because i dont know how to do that in SQL.

; Generated by AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer  & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
      If stringinstr($objItem.IPaddress(0) , "192.168") Then
      $Output = $Output & "IP Address: " & $objItem.IPaddress(0) & @CRLF
      $Output = $Output & "MAC Address: " & $objItem.IPaddress(1) & @CRLF
      $Output = $Output & "Some other Address: " & $objItem.IPaddress(2) & @CRLF
      $Output = $Output & "One more Address: " & $objItem.IPaddress(3) & @CRLF


      if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
      EndIf
      $Output=""
   Next
Else
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_NetworkAdapterConfiguration" )
Endif

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • TheAppleFreak
      By TheAppleFreak
      Never experienced anything like this before, so to you I come for help...
      I'm in the process of rewriting my fork of JSThePatriot's excellent Computer Information library, and my current project is rewriting the User profiling function. One of the new features I've added in is gathering the list of groups a particular user profile belongs to, which uses an existing WMI object to run an "ASSOCIATORS OF" query targeting the specified domain and username. 
      When I run the function under my own user account from within ISN/ScITE or compile it and run it via Windows Explorer, my test script collects the information in a fraction of a second. When I compile the script and Right Click -> "Run As Administrator," the script takes almost three and a half minutes to complete. It's literally the exact same code, but running under Administrator has a computed 6320x slowdown. Examining the script running in Process Monitor showed no activity during what I assume are these queries, which boggles my mind. 
      If someone could tell me what I'm doing wrong, that'd be super awesome. Below is the code used, and below that is a log file that I generated to root out what in particular was causing the massive slowdown. It's worth mentioning that I'm currently running Windows 8.1 on this machine, under a user account that is part of both the Administrators and Users groups. 
      ; From CompInfoObject.au3 ; ========================= #include <File.au3> #include <Array.au3> #include <Security.au3> #region Global Variables and Constants If Not(IsDeclared("$cI_CompName")) Then Global $cI_CompName = @ComputerName EndIf Global Const $cI_VersionInfo = "00.03.08" Global Const $cI_aName = 0, _ $cI_aDesc = 4 Global $wbemFlagReturnImmediately = 0x10, _ ;DO NOT CHANGE $wbemFlagForwardOnly = 0x20 ;DO NOT CHANGE Global $ERR_NO_INFO = "Array contains no information", _ $ERR_NOT_OBJ = "$colItems isnt an object" Global Const $VERSION_CIO = "2.1.0.0" #endregion Global Variables and Constants ; Test script ; ========================== Global Const $logPath = "D:\logFile.txt" If IsAdmin() Then FileWriteLine($logPath, "============= RUNNING AS ADMINISTRATOR ============") Else FileWriteLine($logPath, "================= RUNNING AS USER =================") EndIf FileWriteLine($logPath, "") FileWriteLine($logPath, "Starting user profiling...") FileWriteLine($logPath, "") Local $runtime = TimerInit() Local $test = _ComputerGetUsers() FileWriteLine($logPath, "User profiling complete after " & (TimerDiff($runtime) / 1000) & " seconds") FileWriteLine($logPath, "") MsgBox(0, "", "complete", 10) ; From CompInfoObject.au3 Func _ComputerGetUsers() Local $localSIDs[1] Local $i = 0, $x = 1, $sid While 1 $sid = RegEnumKey("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", $x) If @error Then ExitLoop If StringInStr($sid, "S-1-5-21-") Then If IsArray(_Security__LookupAccountSid($sid)) Then ReDim $localSIDs[$i + 1] $localSIDs[$i] = $sid $i += 1 EndIf EndIf $x += 1 Wend $i = 0 _ArraySort($localSIDs) Local $colItems, $objWMIService, $objItem, $wqlQuery Local $groups, $userProfile, $userProfileLoaded, $regMountPoint, $runtime Local $users[1] = [ObjCreate("Scripting.Dictionary")] $wqlQuery = "SELECT * FROM Win32_UserAccount" $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2") $colItems = $objWMIService.ExecQuery($wqlQuery, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems ; Restrict users to actual users on the computer If _ArrayBinarySearch($localSIDs, $objItem.SID) <> -1 Then FileWriteLine($logPath, "Collecting basic information for " & $objItem.Name & "...") $runtime = TimerInit() $regMountPoint = Null $userProfileLoaded = False ReDim $users[$i + 1] $users[$i] = ObjCreate("Scripting.Dictionary") $users[$i].Add("Name", StringStripWS($objItem.Name, 3)) $users[$i].Add("Domain", StringStripWS($objItem.Domain, 3)) $users[$i].Add("Status", StringStripWS($objItem.Status, 3)) $users[$i].Add("FullName", StringStripWS($objItem.FullName, 3)) $users[$i].Add("Description", StringStripWS($objItem.Description, 3)) $users[$i].Add("SID", StringStripWS($objItem.SID, 3)) $users[$i].Add("Disabled", $objItem.Disabled) $users[$i].Add("Lockout", $objItem.Lockout) $users[$i].Add("PasswordChangeable", $objItem.PasswordChangeable) $users[$i].Add("PasswordExpires", $objItem.PasswordExpires) $users[$i].Add("PasswordRequired", $objItem.PasswordRequired) FileWriteLine($logPath, "Finished collecting basic information for " & $users[$i].Item("Name") & " in " & (TimerDiff($runtime) / 1000) & " seconds") FileWriteLine($logPath, "") ; Get user group membership FileWriteLine($logPath, "Collecting group information for " & $users[$i].Item("Name") & "...") $runtime = TimerInit() $groups = $objWMIService.ExecQuery("ASSOCIATORS OF {Win32_UserAccount.Domain='" & $objItem.Domain & "',Name='" & $objItem.Name & "'} WHERE ResultClass=Win32_Group", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($groups) Then Local $temp[1] $x = 0 For $group in $groups ReDim $temp[$x + 1] $temp[$x] = ObjCreate("Scripting.Dictionary") $temp[$x].Add("Name", $group.Name) $temp[$x].Add("Domain", $group.Domain) $temp[$x].Add("SID", $group.SID) $x += 1 Next $users[$i].Add("Groups", $temp) EndIf FileWriteLine($logPath, "Finished collecting group information for " & $users[$i].Item("Name") & " in " & (TimerDiff($runtime) / 1000) & " seconds") FileWriteLine($logPath, "") #cs ; First, we need to mount the registry before anything else, or get the registry path if it already is $userProfile = $objWMIService.ExecQuery("SELECT * FROM Win32_UserProfile WHERE SID=""" & $users[$i].Item("SID") & """", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($userProfile) Then For $profile in $userProfile $users[$i].Add("ProfilePath", StringStripWS($profile.LocalPath, 3)) If $profile.Loaded Then $userProfileLoaded = True $regMountPoint = "HKEY_USERS\" & $users[$i].Item("SID") & "\" EndIf ExitLoop Next ; Profile isn't loaded. Load it manually. If $regMountPoint == Null Then If RunWait("reg load HKU\TEMP-&" & $users[$i].Item("SID") & " " & $users[$i].Item("ProfilePath") & "\NTUSER.dat") == 0 Then MsgBox(0, "", "Loaded registry hive for " & $users[$i].Item("Name") & @CRLF, 3) $regMountPoint = "HKEY_USERS\TEMP-" & $users[$i].Item("SID") & "\" Else MsgBox(0, "", "Failed to load registry hive for " & $users[$i].Item("Name") & @CRLF, 3) EndIf EndIf EndIf ; Get user's mapped file shares ; HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ ; Run regex "\#\#(.+?)\#(.+?)" to get path, then read key _LabelFromReg for any custom drive label applied ; Get user's mapped printers ; https://support.microsoft.com/en-us/kb/102966 ; Unload profile if it wasn't previously loaded If Not $userProfileLoaded And $regMountPoint <> Null Then If RunWait("reg unload " & StringRegExp($regMountPoint, "^(.*)\\$", 1)[0]) Then MsgBox(0, "", "Unloaded registry hive at " & $regMountPoint & @CRLF, 3) Else MsgBox(0, "", "Error: Could not unload registry hive at " & $regMountPoint & @CRLF, 3) EndIf EndIf #ce $i += 1 EndIf Next If $users[Ubound($users) - 1].Count < 1 Then ReDim $users[Ubound($users) - 1] EndIf If Ubound($users) < 1 Then Return SetError(1, 1, 0) EndIf Else Return SetError(1, 2, 0) EndIf Return $users EndFunc And here's the log file:
      ================= RUNNING AS USER ================= Starting user profiling... Collecting basic information for Administrator... Finished collecting basic information for Administrator in 0.000332286438607835 seconds Collecting group information for Administrator... Finished collecting group information for Administrator in 0.0347993066888362 seconds Collecting basic information for <redacted>... Finished collecting basic information for <redacted> in 0.00030855169299299 seconds Collecting group information for <redacted>... Finished collecting group information for <redacted> in 0.0321612217877267 seconds User profiling complete after 0.1464664737096 seconds ============= RUNNING AS ADMINISTRATOR ============ Starting user profiling... Collecting basic information for Administrator... Finished collecting basic information for Administrator in 0.000270383656125874 seconds Collecting group information for Administrator... Finished collecting group information for Administrator in 27.3050492143158 seconds Collecting basic information for <redacted>... Finished collecting basic information for <redacted> in 0.000575407211257197 seconds Collecting group information for <redacted>... Finished collecting group information for <redacted> in 203.270754752081 seconds User profiling complete after 230.621668475639 seconds  
    • hhsecond
      By hhsecond
      Hi folks,
      I am working with win32_printerconfiguration for checking the duplex option is installed or not in the printers.
       
      $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
                  $Error_WMI = @error
                  If IsObj($objWMIService) Then
                     $colItemsa = $objWMIService.ExecQuery ("Select * from Win32_PrinterConfiguration ", "WQL",$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
                     If IsObj($colItemsa) Then
                        For $objPrinters In $colItemsa
                          msgbox(0,"check","entering loop")
                           $NameP = $objPrinters.Name
                           If $NameP = $cfgLocPrinterName[$p - 1] Then
                              $DuplexValue = $objPrinters.Duplex
                           EndIf
                        Next
                     EndIf
                  Else
                     LogCreation("DuplexInstalledCheck", "WMI object", "Error in reading WMI object")
                  EndIf
       
      script is existing from the for loop. it is not even printing the msg box titled check. any one please help