Monday, December 21, 2009

Creating Multiple User Objects

Occasionally, situations emerge that require you to create multiple user objects quickly, such as a new class of incoming students at a Institute or a group of new hires at an organization. In these situations you must know how to facilitate or automate user object creation effectively so that you do not approach the task on an account-by-account basis. In topic Creating and Managing User Objects, you learned how to create and manage user objects with Active Directory Users and Computers. This topic will extend those concepts, skills, and tools to include user object creation through template objects, imported objects, and command-line scripting of objects.


Creating and Utilizing User Object Templates

It is common for objects to share similar properties. For example, all sales representatives may belong to the same security groups, are allowed to log on to the network during the same hours, and have home folders and roaming profiles on the same server. In such cases, it is helpful when creating a user object for that object to be pre-populated with common properties. This can be accomplished by creating a generic user object—often called a template—and then copying that object to create new users.

To generate a user template, create a user and populate its properties. Put the user into appropriate groups.

To create a user based on the template, select the template and choose Copy from the Action menu. You will be prompted for properties similar to those when you created a new user: first and last name, initials, logon names, password, and account options. When the object is created, you will find that properties are copied from the template based on the following property-page-based description:

*General: No properties copied

*Address: All properties except Street address are copied

*Account: All properties are copied, except for logon names, which you are prompted to enter when copying the template

*Profile: All properties are copied, and the profile and home-folder paths are modified to reflect the new user’s logon name

*Telephones: No properties are copied

*Organization: All properties are copied, except for Title

*Member Of: All properties are copied

* Dial-in, Environment, Sessions, Remote Control, Terminal Services Profile, COM+: No properties are copied

Importing User Objects Using CSVDE

CSVDE is a command-line utility that allows you to import or export objects in Active Directory from (or to) a comma-delimited text file (also known as a comma-separated value text file), which is, of course, a common format easily read in Notepad and Microsoft Excel. The command is a powerful way to generate objects quickly. The command’s basic syntax is

csvde [-i] [-f FileName] [-k]

-i: Specifies import mode. If not specified, the default mode is export.

-f: FileName: Identifies the import file name.

-k: Ignores errors including “object already exists,” “constraint violation,” and “attribute or value already exists” during the import operation and continues processing.

The import file itself is a comma-delimited text file (*.csv or *.txt), in which the first line is a list of Lightweight Directory Access Protocol (LDAP) attribute names for the attributes imported, followed by one line for each object. Each object must contain exactly the attributes listed on the first line. A sample file follows:

DN,objectClass,sAMAccountName,sn,givenName,userPrincipalName

"CN=Prashant Pandey,OU=Employees,DC=mcseweb,DC=com", user,ppandey,pandey,prashant,prashant.pandey@mcseweb.com

This file, when imported, would create a user object in the Employees OU called Scott Bishop. The logon names, first, and last name are configured by the file. The object will be disabled initially. Once you have reset the password, you can enable the object.

Utilizing Active Directory Command-Line Tools

Windows Server 2003 supports a number of powerful command-line tools to facilitate the management of Active Directory. The following is a list, and brief description, of each tool:

* DSADD Adds objects to the directory.

* DSGET Displays (“gets”) properties of objects in the directory.

* DSMOD Modifies select attributes of an existing object in the directory.

* DSMOVE Moves an object from its current container to a new location.

* DSRM Removes an object, the complete subtree under an object, or both.

*DSQUERY Queries Active Directory for objects that match a specified search criteria. This command is often used to create a list of objects, which are then piped to the other command-line tools for management or modification.

These tools use one or more of the following components in their command-line switches:

*Target object type: One of a predefined set of values that correlate with an object class in Active Directory. Common examples are: computer, user, OU, group, and server (meaning domain controller).

*Target object identity: The distinguished name (DN) of the object against which the command is running. The DN of an object is an attribute of each object that represents the object’s name and location within an Active Directory forest. For example, you created a user object with the distinguished name: CN=Manu, OU=Employees, DC=mcseweb, DC=com.

*Server: You can specify the domain controller against which you want to run the command.

*User: You can specify a user name and password with which to run the command. This is useful if you are logged in with non-administrative credentials and wish to launch the command with elevated credentials.

In addition, switches and parameters are case-insensitive, and can be prefixed with either a dash (“-”) or a slash (“/”).

DSQUERY

The DSQUERY command queries Active Directory for objects that match a specific criteria set. The command’s basic syntax is:

dsquery object_type [{StartNode forestroot domainroot}] [-o {dn rdn samid}] [-scope {subtree onelevel
base}] [-name Name] [-desc Description] [-upn UPN] [-samid SAMName] [-inactive NumberOfWeeks] [-stalepwd NumberOfDays] [-disabled] [{-s Server -d Domain}] [-u UserName] [-p {Password *}]

The basic parameters are summarized in below table:

Parameters for the DSQUERY Command


Query scope

object_type: Required. The object type represents the object class(es) which will be searched. The object type can include computer, contact, group, OU, server, user, or the wildcard “*” to represent any object class. This lesson will focus on the command’s use in querying for the user object type.

{StartNode forestroot domainroot}: Optional. Specifies the node from which the search begins. You can specify the forest root (forestroot), domain root (domainroot), or a node’s dis-tinguished name (StartNode). If forestroot is specified, the search is performed using the global catalog. The default value is domainroot.

-scope {subtree onelevel base}: Specifies the scope of the search. A value of subtree indicates that the scope is a subtree rooted at start node. A value of onelevel indicates the immediate children of start node only. A value of base indicates the single object represented by start node. If forestroot is specified as StartNode, subtree is the only valid scope. By default, the subtree search scope is used.

How to display the result set

-o {dn, rdn, samid}: Specifies the format in which the list of entries found by the search will be outputted or displayed. A dn value displays the distinguished name of each entry. A rdn value displays the relative distinguished name of each entry. A samid value displays the Security Accounts Manager (SAM) account name of each entry. By default, the dn format is used.

Query criteria

-name Name: Searches for users whose name attributes (value of CN attribute) matches Name. You can use wildcards. For example, “jo*” or “*hn” or “j*hn”.

-desc Description: Searches for users whose description attribute matches Description. You can use wildcards.

-upn UPN: Searches for users whose UPN attribute matches UPN.

-samid SAMName: Searches for users whose SAM account name matches SAMName. You can use wildcards.

-inactive NumberOfWeeks: Searches for all users that have been inactive (stale) for the specified number of weeks.

-stalepwd NumberOfDays: Searches for all users who have not changed their passwords for the specified number of days.

-disabled: Searches for all users whose accounts are disabled.

Domain controller and credentials used for the command

{-s Server -d Domain}: Connects to a specified remote server or domain.

-u UserName: Specifies the user name with which the user logs on to a remote server. By default, -u uses the user name with which the user logged on. You can use any of the following formats to specify a user name

*user name (for example, rocky)

*domain\user name (for example, widgets\ rocky)

*UPN (for example, rocky @widgets.microsoft.com)

-p {Password *} Specifies to use either a password or a * to log on to a remote server. If you type *, you are prompted for a password.

DSADD

The DSADD command enables you to create objects in Active Directory. When creating a user, utilize the DSADD USER command. DSADD parameters allow you to con-figure specific properties of an object. The parameters are self-explanatory, however the Windows Server 2003 Help And Support Center provides thorough descriptions of the DSADD command’s parameters if you desire more explanation.

dsadd user UserDN

The UserDN… parameter is one or more distinguished names for the new user object(s). If a DN includes a space, surround the entire DN with quotation marks. The UserDN… parameter can be entered one of the following ways:

*By piping a list of DNs from another command, such as DSQUERY.

*By typing each DN on the command line, separated by spaces.

*By leaving the DN parameter empty, at which point you can type the DNs, one at a time, at the keyboard console of the command prompt. Press ENTER after each DN. Press CTRL+Z and ENTER after the last DN.

The DSADD USER command can take the following optional parameters after the DN parameter:

*-samid SAMName

*-upn UPN

*-fn FirstName

*-mi Initial

*-ln LastName

*-display DisplayName

*-empid EmployeeID

*-pwd {Password *} where * will prompt you for a password

*-desc Description

*-memberof GroupDN;...

*-office Office

*-tel PhoneNumber

*-email Email

*-hometel HomePhoneNumber

*-pager PagerNumber

*-mobile CellPhoneNumber

*-fax FaxNumber

*-iptel IPPhoneNumber

*-webpg WebPage

*-title Title

*-dept Department

*-company Company

*-mgr ManagerDN

*-hmdir HomeDirectory

*-hmdrv DriveLetter:

*-profile ProfilePath

*-loscr ScriptPath

*-mustchpwd {yes no}

*-canchpwd {yes no}

*-reversiblepwd {yes no}

*-pwdneverexpires {yes no}

*-acctexpires NumberOfDays

*-disabled {yes no}

As with DSQUERY, you can add -s, -u, and -p parameters to specify the domain controller against which DSADD will run, and the user name and password—the credentials—that will be used to execute the command.

*{-s Server -d Domain}

*-u UserName

*-p {Password *}

The special token $username$ (case-insensitive) may replace the SAM account name in the value of the -email, -hmdir, -profile, and -webpg parameters. For example, if a SAM account name is “mac,” the -hmdir parameter can be written in either of the following formats:

*-hmdir\users\ mac \home

*-hmdir\users\$username$\home

DSMOD

The DSMOD command modifies the properties of one or more existing objects.

dsmod user UserDN ... parameters

The command handles the UserDN… parameter exactly as the DSADD command, and takes the same parameters. Of course now, instead of adding an object with properties, you are modifying an existing object. Note that the exceptions are that you cannot modify the SAMName (-samid parameter) or group membership (-memberof parameter) of a user object using the DSMOD USER command. You can use the DSMOD GROUP command, discussed in Topic, “Group Accounts,” to change group membership from a command-line utility.

The DSMOD command also takes the -c parameter. This parameter puts DSMOD into continuous operation mode, in which it reports errors but continues to modify the objects. Without the -c parameter, DSMOD will stop operation at the first error.

DSGET

The DSGET command gets, and outputs, selected properties of one or more existing objects.

dsget user UserDN ... parameters

The command handles the UserDN… parameter exactly as the DSADD command does, and takes the same parameters except that DSGET takes only the parameter and not an associated value. For example, DSGET takes the -samid parameter, not the -samid SAMName parameter and value. The reason for this is clear: You are displaying, not adding or modifying, a property. In addition, DSGET does not support the password parameter because it cannot display passwords. DSGET adds the -dn and -sid parameters, which display the user object’s distinguished name and SID, respectively.

DSMOVE

The DSMOVE command allows you to move or rename an object within a domain. It cannot be used to move objects between domains. Its basic syntax is:

dsmove ObjectDN [-newname NewName] [-newparent ParentDN]

DSMOVE also supports the -s, -u, and -p parameters described in the section regarding DSQUERY.

The object is specified using its distinguished name in the parameter ObjectDN. To rename the object, specify its new common name in the NewName parameter. Specifying the distinguished name of a container in the ParentDN parameter will move the object to that container.

DSRM

DSRM is used to remove an object, its subtree, or both. The basic syntax is:

dsrm ObjectDN ... [-subtree [-exclude]] [-noprompt] [-c]

It supports the -s, -u, and -p parameters described in the section about DSQUERY.

The object is specified by its distinguished name in the ObjectDN parameter. The -subtree switch directs DSRM to remove the objects contents if the object is a container object. The -exclude switch excludes the object itself, and can be used only in conjunction with -subtree. Specifying -subtree and -exclude would, for example, delete an OU and its subtree, but leave the OU intact. By default, without the -subtree or -exclude switches, only the object is deleted.

You will be prompted to confirm the deletion of each object, unless you specify the -noprompt parameter. The -c switch puts DSRM into continuous operation mode, in which errors are reported but the command keeps processing additional objects. With-out the -c switch, processing halts on the first error.

No comments:

Post a Comment