HighSpeed556 Posted September 26, 2016 Posted September 26, 2016 I feel like I'm missing something stupid easy here. But basically, I want to be able to run the following command and have the "True" or "False" value feed into a variable (for this example we'll call it $passwordexpires): command: wmic useraccount where name="usernamehere" get passwordexpires If I run this from a command window I get a "True" or "False" value. But my dumb self apparently can't figure out how to have that value dump into the variable $passwordexpires. I thought it would be something like this, but this clearly doesn't work: Local $PasswordExpires = ShellExecute("wmic.exe", "useraccount where name='usernamehere' get passwordexpires") I know this doesn't work because when I then generate a MsgBox to display the value of $PasswordExpires it keeps displaying what looks to be a random number (which in and of itself is also confusing me).
Gianni Posted September 26, 2016 Posted September 26, 2016 One of possible ways #include <AutoItConstants.au3> #include <StringConstants.au3> Local $sUsername = "administrator" ; target username Local $sOutput = "" ; build your wmic query Local $sWMICquery = 'wmic useraccount where name="' & $sUsername & '" get passwordexpires /format:VALUE' ; run your query hidden and with redirected I/O streams Local $hPid = Run($sWMICquery, '', @SW_HIDE, $STDERR_MERGED) Do Sleep(100) $sOutput &= StdoutRead($hPid) ; get wmic output from redirected stream Until @error ; error occurs when command has finished $sOutput = StringStripWS($sOutput, $STR_STRIPALL) ; remove all @cr and spaces from output MsgBox(0, 'Debug', $sOutput) ; show result ShakibHasan 1 Chimp small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....
kylomas Posted September 27, 2016 Posted September 27, 2016 Another using win management services... Local $strComputer = "." Local $wmi = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") Local $col = $wmi.ExecQuery("Select * from Win32_useraccount where name = 'tom'") For $item In $col ConsoleWrite($item.name & @CRLF) ConsoleWrite($item.passwordexpires & @CRLF) Next kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
HighSpeed556 Posted September 27, 2016 Author Posted September 27, 2016 Okay, that works. Now...why can't I build an "if then" statement around this. For testing purposes, why does this not work? If $sOutput = "True" Then MsgBox(0, "It's True", $sOutput) EndIf If $sOutput = "False" Then Msgbox(0, "It's False", $sOutPut) EndIf
HighSpeed556 Posted September 27, 2016 Author Posted September 27, 2016 On 9/26/2016 at 11:42 PM, Chimp said: One of possible ways #include <AutoItConstants.au3> #include <StringConstants.au3> Local $sUsername = "administrator" ; target username Local $sOutput = "" ; build your wmic query Local $sWMICquery = 'wmic useraccount where name="' & $sUsername & '" get passwordexpires /format:VALUE' ; run your query hidden and with redirected I/O streams Local $hPid = Run($sWMICquery, '', @SW_HIDE, $STDERR_MERGED) Do Sleep(100) $sOutput &= StdoutRead($hPid) ; get wmic output from redirected stream Until @error ; error occurs when command has finished $sOutput = StringStripWS($sOutput, $STR_STRIPALL) ; remove all @cr and spaces from output MsgBox(0, 'Debug', $sOutput) ; show result Expand That works, but now why can I not seem to build an If Then statement around the results of $sOutput? For example, this code always displays the "It's True" box, no matter if the value of $sOutput is True or False. If $sOutput = True Then MsgBox(0, "It's True", $sOutput) EndIf If $sOutput = False Then Msgbox(0, "It's False", $sOutPut) EndIf
kylomas Posted September 27, 2016 Posted September 27, 2016 Because the value of $soutput is not true or false. Run the example again and look at the messagebox. Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
kylomas Posted September 27, 2016 Posted September 27, 2016 This might make it clearer... Local $strComputer = "." Local $wmi = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") Local $col = $wmi.ExecQuery("Select * from Win32_useraccount where name = '" & @UserName & "'") if $col.count > 1 then exit msgbox(17,'Oooops!','More than one user named ' & @username) For $item In $col $passwordexpires = $item.passwordexpires Next ConsoleWrite($passwordexpires & @CRLF) Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
HighSpeed556 Posted September 27, 2016 Author Posted September 27, 2016 On 9/27/2016 at 12:44 AM, kylomas said: This might make it clearer... Local $strComputer = "." Local $wmi = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") Local $col = $wmi.ExecQuery("Select * from Win32_useraccount where name = '" & @UserName & "'") if $col.count > 1 then exit msgbox(17,'Oooops!','More than one user named ' & @username) For $item In $col $passwordexpires = $item.passwordexpires Next ConsoleWrite($passwordexpires & @CRLF) Expand Okay, that seems to make more sense. Thanks a lot!
water Posted September 27, 2016 Posted September 27, 2016 You could search the Example scripts forum for "Scriptomatic". That's a script that generates AutoIt code for all kinds of WMI queries My UDFs and Tutorials: Reveal hidden contents UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now