Method: Sys::Admin.add_user
- Defined in:
- lib/windows/sys/admin.rb
.add_user(options = {}) ⇒ Object
Creates the given user. If no domain option is specified, then it defaults to your local host, i.e. a local account is created.
Any options provided are treated as IADsUser interface methods and are called before SetInfo is finally called.
Examples:
# Create a local user with no options
Sys::Admin.add_user(:name => 'asmith')
# Create a local user with options
Sys::Admin.add_user(
:name => 'asmith',
:description => 'Really cool guy',
:password => 'abc123'
)
# Create a user on a specific domain
Sys::Admin.add_user(
:name => 'asmith',
:domain => 'XX',
:fullname => 'Al Smith'
)
– Most options are passed to the ‘put’ method. However, we handle the password specially since it’s a separate method, and some environments require that it be set up front.
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/windows/sys/admin.rb', line 136 def self.add_user( = {}) = () name = .delete(:name) or raise ArgumentError, 'No user given' domain = [:domain] if domain.nil? domain = Socket.gethostname moniker = "WinNT://#{domain},Computer" else moniker = "WinNT://#{domain}" end begin adsi = WIN32OLE.connect(moniker) user = adsi.create('user', name) .each do |option, value| if option.to_s == 'password' user.setpassword(value) else user.put(option.to_s, value) end end user.setinfo rescue WIN32OLERuntimeError => err raise Error, err end end |