Go Back   TechArena Community > Technical Support > Computer Help > Windows Server > Windows Server Help
Become a Member!
Forgot your username/password?
Register Tags Active Topics RSS Search Mark Forums Read SiteMap

Tags: , , , , ,

Sponsored Links



Using WMI to disable a user account

Windows Server Help


Reply
 
Thread Tools Search this Thread
  #1  
Old 13-04-2007
Paul
 
Posts: n/a
Using WMI to disable a user account

Hi,

I want to use a WMI script to disable a user account. Here's the test code
I'm using:

compName = "localhost"
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"& _
compName & "\root\cimv2")
Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount")
For Each user In users
If user.Name = "whatever" Then
user.Disabled = True
End If
Next 'user

The code runs fine (on a Windows Server 2003 box; I'm logged in as
Administrator), but the user's account is not disabled. Any idea why?
Reply With Quote
  #2  
Old 13-04-2007
Al Dunbar
 
Posts: n/a
Re: Using WMI to disable a user account

Interesting. I had the same result on XP with a non-admin account, so it's
not just that you are testing against a name where the (upper/lower) case
doesn't match. I added some echo statements to make sure the .disabled
attribute has a boolean value and is modifiable, i.e.:

compName = "localhost"
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"&
_
compName & "\root\cimv2")
Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount")
For Each user In users
If user.Name = "zzz" Then
wscript.echo "disabling user [" & user.name & "]"
wscript.echo "[" & user.disabled & "]"
user.Disabled = not user.disabled
wscript.echo "[" & user.disabled & "]"
End If
Next 'user
wscript.echo "after FOR EACH loop"

Since this indicated that the attribute had indeed changed (although not on
the actual account), it seems to me that there might perhaps be some
requirement to write the property back to the sam database with something
like the ".SetInfo" method used in active directory. There might be, but it
isn't user.setinfo, as that threw an "object doesn't support this property
or method" exception.
Reply With Quote
  #3  
Old 13-04-2007
Richard Mueller [MVP]
 
Posts: n/a
Re: Using WMI to disable a user account

Documentation says that the Disabled property is read/write. Also says that
if a property is read-only, no error is raised when you attempt to modify
the value. This acts as if the property is read-only. Strange.

It doesn't help this problem, but the query would be more efficient if you
specified the user. For example:

Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name =
'MyUserName'")

or another option could be:

Set objUser = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer _
& "\root\cimv2:Win32_UserAccount." _
& "Domain='MyDomain',Name='MyUserName'")
Reply With Quote
  #4  
Old 13-04-2007
Paul
 
Posts: n/a
Re: Using WMI to disable a user account

Actually, the property *does* change, albeit briefly. Consider the following
variation:

compName = "localhost"
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//"& compName
& "\root\cimv2")
Set users = wmi.ExecQuery("SELECT * FROM Win32_UserAccount WHERE
Description='whatever'")

For Each user In users
user.Disabled = True
WScript.Echo user.Name & ": " & user.Disabled
Next 'user

For Each user In users
WScript.Echo user.Name & ": " & user.Disabled
Next 'user

In the first Echo, Disabled returns True; in the second Echo, it returns
False!

I wonder if it's similar to making changes in an ADO Recordset, where after
you edit a field value you have to run the Update method to write the
changes. Might there be some WMI equivalent to the ADO Update method?
Reply With Quote
  #5  
Old 21-12-2009
dad dad is offline
Member
 
Join Date: Dec 2009
Posts: 1
Re: Using WMI to disable a user account

Yes, Just call the .Put_() method to commit the whole instance:

Code:
user.Put.();
Regards

http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Last edited by bhavesh : 22-12-2009 at 12:51 PM. Reason: Add ref links
Reply With Quote
Reply

  TechArena Community > Technical Support > Computer Help > Windows Server > Windows Server Help


Thread Tools Search this Thread
Search this Thread:

Advanced Search


Similar Threads for: "Using WMI to disable a user account"
Thread Thread Starter Forum Replies Last Post
some of the user account inheritance setting automatic disable hel mr555 Active Directory 5 09-11-2009 07:04 AM
How to disable the User Account Control in vista M. Rafi Windows Software 4 21-07-2009 10:58 PM
Partially disable UAC (User Account Control) hayeden Tips & Tweaks 1 22-05-2009 11:33 PM
How to control enable/disable user account rights RVirene Active Directory 7 17-04-2009 02:30 PM
How to disable "The User Account auto lock function"? Tommy Small Business Server 3 05-04-2008 05:46 PM


All times are GMT +5.5. The time now is 06:54 PM.